joi, 18 februarie 2016

19.02.2016 Baze de date MySQL

  1. Prezentarea normelor de protectia muncii, regulamentului scolar in laboratorul de informatica
  2. Prezentarea planificarii calendaristice
Aplicatii WEB cu baze de date MySQL
3
S1-S2-S3(II)
Aplicaţii
1
S4(II)
1.        
Concepte generale
Noţiunea de proiect
Obiectivele proiectului
Fazele unui proiect
Managerul de proiect, echipa de proiect (roluri)
Planul unui proiect, elemente de evaluare
Structura pe activităţi (wbs)
Grafic de activităţi, traiectorie critică
1



S5(II)




2.        
Etapele unui proiect
Iniţierea proiectului: justificarea economică, stabilirea obiectivelor, oportunitatea proiectului.
1


S6(II)




Planificarea proiectelor: organigrama proiectului, structura echipei de proiect, planul de proiect, structura activităţilor (WBS), alocarea resurselor (efort/durată, cost, dependinţe)
1




S7(II)


Monitorizarea proiectului: cereri de schimbare cu justificare şi aprobare, controlul riscului, rapoarte (de progres, de excepţii).
1


S8(II)

Evaluarea proiectului: calitatea proiectelor, raport de sfârşit de proiect
1
S9(II)
3.        
Componentele proiectului
Organizaţia de proiect, planurile, mijloacele de control, etapele, managementul riscului, controlul schimbării, managementul configuraţiei, calitatea.
2
S10 S11(II)
4.        


Instrumente software
Pentru crearea graficelor, schiţelor, şabloanelor de prezentare, diagramelor (Gantt).
Pentru planificare şi monitorizarea proiectelor: Ms Project, Primavera.
Aplicaţii
2
S12 S13(II)
Recapitulare finală
1
S14(II)

NOTIUNI INTRODUCTIVE Mysql
 Suport de curs <descarca>
MySQL este un sistem de gestiune a bazelor de date relaționale, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală[6], fiind o componentă cheie a stivei LAMP (LinuxApache, MySQL, PHP).
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum ar fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip specific API. 

Instructiuni PHP

Instructiuni uzuale folosite in PHP  

Pe langa instructiunile comune amintite in lectiile anteriorare - instructiunile de afisare, instructiunile de control, instructiunile pentru vectori, string-uri sau timp - exista o serie de alte functii ale limbajului PHP care sunt folosite cu precadere de orice programator.
Detaliem in cele ce urmeaza cateva dintre ele.

Functia mail()

PHP poate trimite emailuri daca pe serverul curent este instalata si o aplicatie de email (un server de email). Nu este nevoie de configurari suplimentare atat timp cat serverul de email nu are restrictii si poate fi accesat de aplicatiile locale. Intr-o instalare pe calculatorul personal, cum este cea descrisa in primele pagini ale acestui tutorial, nu este posibila trimiterea de mesage email, iar functia mail va returna o eroare. Pe un web-server configurat complet si corect, cum sunt serverele ce ofera gazduirea site-urilor, functia mail functioneaza corect.
<?php
// trimitere mesaj simplu
mail('adresa@exemple.com', 'Subiect mesaj', 'Mesaj simplu');
 
// trimiterea unui mesaj in care se specifica date aditionale
$to      = 'adresa@example.com';
$subject = 'Subiect mesaj';
$message = 'Mesaj simplu cu date aditionale';
$headers = 'From: punctsivirgula@example.com' . "\r\n" .
           'Reply-To: punctsivirgula@example.com' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();
 
mail($to, $subject, $message, $headers);
?>

Functii matematice

Limbajul PHP dispune de majoritatea functiilor matematice uzuale. Cateva dintre ele sunt prezentate mai jos cu titlu exemplificativ. Lista completa poate fi gasita pe site-ul de documentatie PHP.
<?php
echo abs(-7);   // functia "valoare absoluta", afiseaza 7
echo sin(60);   // functia "sinus", afiseaza -0.304810621 ...
echo decbin(12);   // returneaza reprezentarea binara a numarului, afiseaza 1100
echo base_convert('7DB', 16, 10);   // returneaza convesia dintr-o baza in alta, afiseaza 2011
echo round(12.3); // returneaza o rotunjire la cel mai apropiat intreg, afiseaza 12
 
echo rand(); // afiseaza un numar aleator
echo rand(10, 70); // afiseaza un numar aleator din intervalul specificat
?>

Functia set_time_limit()

Functia set_time_limit se foloseste pentru a configura timpul maxim cat scriptul curent are voie sa se execute. Este utila atunci cand codul PHP trebuie sa execute un volum mare de operatii care ar putea dura cateva zeci de secunde (spre exemplu la un upload de fisiere). Daca dupa expirarea timpului scriptul inca se afla in executie, serverul va intrerupe executia fi va returna o eroare.
<?php
set_time_limit(50); // seteaza limita la 50 secunde
 
set_time_limit(0); // dezactiveaza limita - scriptul poate rula la nesfarsit
?>

Functia flush()

Functia flush trimite catre browser tot ceea ce a fost afisat deja de script. In mod normal, rezultatul unui script PHP este trimis catre browser pentru afisare doar la finalul executiei intregului script. Aceasta functie ofera posibilitatea trimiterii catre browser a rezultatului pe parcurs ce acesta este printat in PHP. Asta inseamna ca pagina poate fi afisata partiala in timp ce inca se incarca.
<?php
echo 'Text 1<br />';
echo 'Text 2<br />';
flush();
?>

Terminarea executiei

Sunt situatii in care se doreste oprirea executiei unui script PHP. Acest lucru este posibil folosind una din cele doua functii de mai jos.
<?php
exit( "Script terminat" );
die( "Script terminat" );
 
print "Acesta linie nu se afiseaza niciodata";
?>
Nota: instructiunile die si exit sunt echivalente.


Functii de transformare base64

Functiile de codificare base64 sunt folosite pentru codificarea/decodificarea unui text in si din formatul Base64.
<?php
$text = 'Tutorial PHP in limba romana';
echo base64_encode($text); // afiseaza VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==
echo base64_decode('VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==');  // Tutorial PHP in limba romana
?>

Functia phpinfo()

Functia phpinfo ofera informatii despre instalarea PHP curenta si despre serverul pe care aceasta este executata. Rolul acestei functii este pur informativ; functia nu poate fi folosita intr-un script care are un alt scop bine definit. De aceea, este recomandata apelarea acestei functii intr-un script PHP separat, intrucat aceasta creaza o pagina HTML completa.
<?php
phpinfo();  // returneaza o pagina HTML cu informatii despre instalarea PHP 
?>
O alta functie, ce poate fi utila in scripturile voastre, este phpversion - aceasta returneaza doar versiunea curenta a interpretorului PHP. Un exemplu al folosirii acestei functii este mai sus la functia mail.

Extensii ale limbajului PHP   

Pe langa functiile de baza, limbajul PHP ofera posibilitatea extinderii capacitatilor sale prin folosirea extensiilor. Extensiile sunt librarii dezvoltate de regula de cei care au creat limbajul PHP si care ofera functionalitati aditionale, cum ar fi posibilitatea de a manipula anumite tipuri de fisiere (PDF, Excel, Word), posibilitatea de a crea imagini, de a comunica cu alte aplicatii, etc.
Extensiile cele mai uzuale sunt activate implicit la instalarea interpretorului PHP, dar cele mai multe trebuie activate manual prin modificarea configurarii PHP. Intrucat in acest tutorial nu vom folosi nici o functionalitate care sa necesite vreo extensie a PHP-ului, nu vom insista asupra acestora. E bine de stiut doar ca pentru operatiuni specializate si/sau avansate, sunt sanse mari sa existe o extensie care sa usureze lucrul.

Functii in PHP    4 ! 

Functiile sunt blocuri de cod PHP (secvente de cod) bine delimitate si identificate printr-un nume, ce executa un set de operatii. Functiile pot fi executate de mai multe ori in cadrul unui script prin simpla apelare a numelui lor.
Exista functii predefinite, specifice limbajului PHP (cum ar fi printempty, etc) ce poti fi folosite in orice moment, fara a fi nevoie de vreo actiune speciala; si exista functii definite de utilizator, scrise practic de programatori. Pentru ca acestea sa poata fi folosite este nevoie sa fie declarate (si implementate).
Exemplu de functie definita de utilizator:
<?php
 
# functiile se declara folosind cuvantul cheie "function" urmat de numele functiei
# numele functiei trebuie sa fie orice identificator valid (adica sa inceapa cu 
# litere sau cu caracterul _ ) si sa nu contina caractere speciale sau spatiu
# dupa numele functiei se pun paranteze rotunde
# corpul functiei (implementarea) trebuie incadrata in acolade
function afisLuna()
{
 $luni = array( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
  'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
 echo '<select>';
 for( $i = 0; $i < 12; $i++ ) {
  # intrucat se cunosc nr de pasi, se foloseste structura repetitiva for
  echo "<option>{$luni[ $i ]}</option>\n";
 }
 echo '</select>';
}
 
# mai jos vom folosi functia pentru a afisa un drop-down cu lunile anului:
echo 'Luna inceperii activitatii: ';
afisLuna();
 
echo '<br /><br />Luna terminarii activitatii: ';
afisLuna();
 
?>
Rezultatul codului PHP este reprezentat mai jos:
Luna inceperii activitatii: 

Luna terminarii activitatii: 
Am scris, asadar, o singura data codul care afiseaza lunile anului si l-am apelat de cate ori am avut nevoie. Apelarea functiei se face prin specificarea numelui urmat de paranteze. Intre paranteze se pot specifica parametrii, dupa cum vom vedea mai jos. Alternativ, o functie definita de utilizator se poate apela folosind instructiunea call_user_func
# vom rescrie ultima parte a codului
echo 'Luna inceperii activitatii: ';
call_user_func( 'afisLuna' );
 
echo '<br /><br />Luna terminarii activitatii: ';
call_user_func( 'afisLuna' );
Instructiunea call_user_func este utila atunci cand numele functiei este furnizat de o variabila, cu ajutorul caruia se poate apela dinamic o functie. Exemplu:
<?php
 
# definesc 2 functii diferite
function unu() {
 print 'Azi suntem in intai!<br />';
}
 
function alta() {
 print 'Azi e o zi obisnuita<br />';
}
 
# declar o variabila care sa aiba ca valoare numele functiei
$functie = 'unu';
 
# variabila $functie poate sa se schimbe in functie de diferite conditii
# in cazul nostru, daca ziua curenta e prima zi din luna, valoarea va fi 'unu'
if( date( 'd' ) == 1 ) $functie = 'unu';
else $functie = 'alta';
 
# la final apelez dinamic functia data de variabila
# Interpretorul nu stie exact care functie va fi - el doar executa ce-i transmite variabila
 
# eventual pot face niste validari:
#  - function_exists verifica daca functia transmisa a fost definita
#  - is_callable verifica daca variabila transmisa poate fi apelata ca functie
 
if( function_exists( $functie ) && is_callable( $functie ) ) {
 call_user_func( $functie );
} else {
 echo "Nu pot apela functia $functie";
}
// Rezultat (live): Azi e o zi obisnuita
?>
Foarte important de stiut este faptul ca variabilele definite in afara functiilor nu sunt disponibile in interiorul lor. Astfel, codul de mai jos nu va functiona asa cum ne asteptam:
<?php
 
# declar o variabila
$a = "Afara e frumos";
 
# definesc o functie
function afisMesaj() {
 echo $a;
}
 
# apelez functia
afisMesaj(); // nu va afisa nimic!!
 
?>
Functia nu va afisa mesajul, asa cum v-ati fi gandit la prima vedere. Asta pentru ca ce este definit in afara functiei nu este recunoscut in interior. In mod similar, variabilele definite in interiorul unei functii se pierd si NU sunt disponibile in afara acesteia.
Exista totusi o modalitate prin care variabilele definite in afara unei functii sa fie 'aduse' in interiorul ei: folosind intructiunea global.
<?php
 
# declar o variabila
$a = "Afara e frumos";
 
# definesc o functie
function afisMesaj() {
 # folosind cuvantul 'global' ii spun interpretorului PHP ca  
 # vreau sa folosesc o variabila din afara functiei
 global $a;
 echo $a;
}
 
# apelez functia
afisMesaj(); // va afisa Afara e frumos
 
?>
Daca e nevoie sa se foloseasca mai multe variabile globale in cadrul unei functii, acestea se pot specifica toate intr-o singura instructiune global:
global $a, $b, $Vector;

De ce sunt folosite functiile?    

Printre avantajele folosirii functiilor, se numara:
  • reutilizarea codului
    Spre exemplu, daca este nevoie sa se execute aceeasi secventa de cod in mai multe parti ale unui programm sau script, pentru a nu se rescrie codul de fiecare data, se defineste o functie care este apelata de mai multe ori, asa cum am facut in primul exemplu de mai sus
  • modularizare
    Odata cu aparitia functiilor (a subprogramelor, in general) s-a introdus si conceptul de modularizare care presupune impartirea (spargerea) problemei ce trebuie rezolvata in probleme mai mici. Fiecare modul problema mai mica reprezinta un subprogram, implementat intr-o functie care contribuie la rezultatul final.
    Spre exemplu, avem o operatie (relativ) complexa: afisarea inbox-ului unui utilizator. Aceasta problema poate fi impartita in parti mai mici/simple. Pentru fiecare parte s-ar defini cate o functie in loc sa se scrie un singur script foarte mare, iar la final codul va arata cam in felul urmator:
    preluareDateAutentificare();
    verificareDate();
    preluareMesajeInbox();
    afisareInbox();
  • mentinerea usoara a codului si intelegerea mai usoara a logicii aplicatiei sau a scriptului
    Acestea sunt urmari imediate ale primelor 2 puncte. Daca scriptul este structurat, impartit in bucati mai mici, in care aceleasi secvente de cod nu se repeta atunci va fi mai usor si de inteles si de modificat sau intretinut.

Valori returnate. Parametri   

De multe ori este nevoie ca o functie sa returneze o valoare. Majoritatea functiilor predefinite fac lucrul asta; spre exemplu empty returneaza TRUE sau FALSE in functie de starea si continutul unei variabile transmise ca parametru.
Si functiile definite de utilizator pot returna o valoare, cu ajutorul instructiunii return. Exemplu:
<?php
 
function formatareData() {
 $rezultat = date( 'd-m-Y' );
 return $rezultat;
}
 
# rezultatul returnat de functie poate fi folosit in diferite moduri:
$azi = formatareData(); // atribuirea rezultatului
print formatareData(); // afisarea rezultatului
formatareData(); // rezultatul nu este folosit - daca functia nu printeaza ceva
// atunci apelul nu are nici un efect vizibil
 
?>
De asemenea, functiile pot primi date ce pot fi folosite in interiorul lor pentru diverse prelucrari. Acestedate de intrare sunt transmise sub forma de parametrii.
Pentru ca o functie sa poata primi parametrii, aceasta trebuie sa ii declare intre parantezele rounde, ca in exemplul de mai jos
<?php
 
# functia este declarata sa primeasca 2 parametrii ce vor fi prelucrati
# functia returneaza si o valoare, in functie de datele de intrare
function minim($a, $b) {
 if( $a < $b ) return $a;
 else return $b;
}
 
# la apelul functiei, este obligatoriu sa se transmita 2 parametrii
# parametrii pot fi orice expresie (variabile, constante, rezultatul altor functii, etc)
 
print minim( 3, 4 ); // parametrii sunt 2 valori numerice
 
$x = 1; $y = 4;
print minim( $x, $y ); // parametrii sunt 2 variabile
 
$x = 4; $a = 3; $b = 5;
print minim( $x, minim( $a, $b ) ); // parametrii primului apel sunt: variabila $x
// si rezultatul unui alt apel cu 2 parametrii diferiti
 
?>
Nota: intrucat functia minim() returneaza o valoare, ea poate fi folosita ca si cum ar fi un numar normal. De aceea apelul de mai sus este valid. Alte exemple valide sunt mai jos:
<?php
 
$a = 1 + minim( 4, 3 );
 
if( minim( $a, 4 ) > 5 ) { echo "If-ul este True"; }
else { echo "If-ul este False"; }
 
?>
O facilitate avansata oferita de limbajul PHP este folosirea valorilor predefinite pentru parametrii functiilor. Aceasta permite ca o functie sa nu fie apelata cu toti parametrii ei, urmand ca pentru valorile care lipsesc sa fie folosite valorile predefinite. Functia minim() definita mai sus poate fi rescrisa in felul urmator:
<?php
 
function minim($a = 1, $b = 2) {
 if( $a < $b ) return $a;
 else return $b;
}
 
?>
Declararea functiei de mai sus se traduce in felul urmator: daca functia minim() nu este apelata cu toti parametrii, atunci foloseste valoarea 1 pt $a si valoarea 2 pt $b in calculele din interiorul functiei. In acest caz, functia se poate apela in felul urmator:
<?php
 
echo minim(); // echivalent cu echo minim(1,2);
echo minim(7); // echivalent cu echo minim(7,2);
echo minim(7,8); // apel normal cu toti parametrii
 
?>

Expresii, Operatori, operatii cu siruri de caractere

Limbajul PHP - Expresii, Operatori, operatii cu siruri de caractere



Expresii in PHP    

Expresiile sunt constructii ale limbajului PHP care au o valoare. O expresie poate fi un sir de caractere, un numar, o variabila sau chiar o constructie mai complexa (cum ar fi un apel de functie). Ideea de baza este ca orice poate fi evaluat la o valoare este considerat a fi expresie.
Limbajul PHP este construit in jurul expresiilor, iar acest concept, desi ignorat de multi programatori, este foarte important in intelegerea corecta a modului in care interpretorul PHP evalueaza si executa secventele de cod.
Cele mai simple expresii in PHP sunt, asa cum am amintit, numerele (denumite si number literals) sau sirurile de caractere (string literals). Acestea au o valoare ce poate fi determinata in orice moment, iar aceasta valoare poate fi folosita in operatii (cel mai adesea, la atribuiri). In urma unei atribuiri, o variabila va prelua valoarea expresiei atribuite, devenind ea insasi o expresie. Asadar, avand o instructiune de atribuire de forma
$a = 1;
1 este o expresie (number literal) si $a este la randul ei o expresie (variabila).
Mai mult decat atat, in PHP instructiunea de atribuire este in sine o expresie, in sensul ca returneaza o valoare; astfel $a = 1 va returna valoarea expresiei atribuite (1, in acest exemplu). In acest context, putem scrie
// atribuie lui $a valoarea 1, apoi printeaza rezultatul expresiei $a = 1, adica 1
print ($a = 1);
Sau chiar
// atribuie lui $a valoarea 1, apoi atribuie lui $b rezultatul expresiei, adica 1
$b = ($a = 1);
De mentionat este ca expresiile sunt evaluate de la dreapta la stanga. In exemplul de mai sus, mai intai se executa si evalueaza expresia $a = 1 iar apoi se executa atribuirea $b = ... in care operandul din dreapta este inlocuit cu valoarea efectiva obtinuta.
Nu doar atribuirile sunt expresii. Apelurile de functii (predefinite sau definite de programator) sunt considerate expresii si ele, intrucat returneaza o valoare. De asemenea, asocierea mai multor expresii, folosind operatori, genereaza o noua expresie.
Un alt lucru important referitor la expresii este ca valoarea lor se poate modifica in functie de context. Mai exact, se modifica tipul de date de care apartine expresia (din string in numeric, din numeric in logic, etc). Astfel, daca intr-o operatie este necesar un anumit tip de date, iar expresia folosita are alt tip, atunci valoarea este convertita in mod automat. Asta poate fi un lucru bun, sau poate introduce erori in cod; de aceea este important sa se acorde o atentie sporita valorilor expresiilor, in special atunci cand se combina tipuri de date diferite.
Expresiile sunt fundamentul limbajului PHP si aproape orice este o expresie. Ele apar peste tot in codul sursa si pot fi folosite in atribuiri, ca parametrii ai functiilor sau pentru specificarea conditiilor din structurile de control. In cele ce urmeaza vor fi prezentati operatorii limbajului PHP care pot fi aplicati unor expresii si care genereaza (prin compunere) noi expresii.

Operatori in PHP    


Operatorii sunt elemente de limbaj ce se aplica expresiilor si dau nastere unor noi expresii. Exista mai multe tipuri de operatori, cu sintaxa si roluri diferite. De retinut este ca toti operatorii vor determina conversia expresiilor componente atunci cand acestea au tipuri diferite de date. Regula de conversie difera de la un tip de date la altul si de la un operator la altul.
Mai jos sunt detaliati operatorii disponibili in PHP.

Operatori de comparare

Operatorii de comparare sunt folositi de cele mai multe ori in cadrul instructiunii if pentru a exprima conditia ce trebuie verificata.
$a == $b // egal
$a === $b // identic (aceeasi valoare si acelasi tip) 
 
$a != $b // diferit
$a <> $b // diferit
$a !== $b // ne-identic
 
$a < $b // strict mai mic
$a <= $b // mai mic sau egal
 
$a > $b // strict mai mare
$a >= $b // mai mare sau egal
Exemple:
<?php
#initializari
$a = 4; # initializam $a cu numarul 4
$b = "4"; # initializam $b cu string-ul "4"
 
# operatorul de egalitate
if( $a == 4 ) print "\$a este 4";   # va afisa "$a este 4"
else print "\$a nu este 4";
 
# operatorul de egalitate
if( $a == $b ) print "Sunt egale";  # va afisa "Sunt egale"
else print "Nu sunt egale";
 
# operatorul de echivalenta
if( $a === $b ) print "Sunt identice";  # va afisa "Nu sunt identice"
else print "Nu sunt identice";
# Nota: deoarece $a este numar iar $b string, ele nu sunt identice
 
# operatorul de comparare
if( $a > 4 ) print "\$a este mai mare decat 4";
?>
Atentie! Daca se compara un string (text) cu un numar, stringul este convertit la un numar. Exemplu:
"text" == 0 // echivalent 0 == 0, evalueaza la true
Daca se compara 2 stringuri ce contin numere, acestea sunt mai intai convertite la numerele pe care le reprezinta si apoi are loc comparatia. Astfel, 2 texte care sunt diferite ar putea fi considerate egale. Exemplu:
"1" == "01" // echivalent 1 == 1, evalueaza la true
"1" == "1e0" // echivalent 1 == 1, evalueaza la true
Nota: "01" si "1e0" sunt notatii matematice diferite pentru numarul 1.
Diferenta intre operatorii == si =
Operatorul == este diferit de operatorul de atribuire = si nu trebuie confundati. Dublu-egal (==) este folosit pentru comparare iar egal simplu (=) - pentru atribuirea de valori unei variabile.
# $a = 5 este o atribuire.
var_dump( $a = 5 ); // 5
# instructiunea print afiseaza rezultatul atribuirii (rezultatul unei atribuiri este 
# intotdeauna egal cu valoarea atribuita)
 
# $a == 1 este o verificare. Instructiunea afiseaza rezultatul verificarii.
var_dump( $a == 1 ); // false
In timp ce atribuirile se pot folosi atat de sine statator ($a = 1;), cat si ca expresii in cadrul instructiunilor (print $a = 1; return $a = 1;) operatorii == sau === sunt folositi doar in cadrul instructiunilor.
# corect
$a = 10; # atribuire de sine statatoare
var_dump( $a = 10 ); # atribuire + afisarea rezultatului atribuirii
 
# incorect - nu genereaza erori dar aceasta constructie este inutila.
$a == 1; # nu se face nimic cu rezultatul comparatiei
 
# corect
var_dump( $a == 1 ); # se afiseaza rezultatul comparatiei
var_dump( $a === '1' ); # se afiseaza rezultatul comparatiei exacte
if( $a == 1 ) echo 'egal'; # se face o verificare

Operatorul ternar

PHP ofera un operator care are 3 termeni si a carui evaluare returneaza o valoare. Sintaxa lui este urmatoarea:
(conditie ? adevarat : fals )
De remarcat ca adevaratfals si conditie nu sunt instructiuni ci expresii (variabile, constante, stringuri, etc) iar operatorul returneaza o valoare si nu o variabila.
print ( 1 == 2 ? 'egal' : 'ne-egal' ); // afiseaza ne-egal
$a = ( 1 == 2 ? 'egal' : 'ne-egal' ); // $a va avea valoarea ne-egal

Operatori de incrementare/decrementare

Incrementare inseamna cresterea valorii, de obicei cu o unitate, iar decrementarea este operatia inversa. PHP ofera (ca si C/C++) posibilitatea ca incrementarea/decrementarea sa se faca printr-un operator, fara sa fie nevoie de o instructiune separata. Spre exemplu:
$a = 1; // initializare
 
// pentru a-l creste pe $a cu o unitate, normal am scrie:
$a = $a + 1;
 
// folosind operatorul de incrementare scriem:
$a++;
// sau
++$a;
 
// pentru a afisa noua valoare, putem aplica operatorul direct din instructiunea print:
print ++$a;
Dupa cum se poate observa, putem scrie $a++ si ++$a. Diferenta este ca atunci cand ++ apare inainte de variabila, PHP face mai intai incrementarea si apoi returneaza noua valoare. Cand ++ apare dupa, se returneaza valoarea actuala (ne-incrementata) si apoi se creste cu o unitate. Exemplu:
$a = 1;
print $a++; // afiseaza 1 - mai intai se afiseaza valoarea curenta, dupa care $a devine 2;
print $a; // afiseaza 2 - $a are valoarea 2 dupa incrementare;
 
$a = 1
print ++$a; // afiseaza 2 - mai intai $a creste cu o unitate, apoi este afisata noua valoare
print $a; // afiseaza 2 - $a are valoarea 2;
Nota: aceleasi observatii (legate de pozitie) se aplica si pentru operatorul de decrementare.
$a = 2;
print $a--; // afiseaza 2 - mai intai se afiseaza valoarea curenta, dupa care $a devine 1;
print $a; // afiseaza 1 - $a are valoarea 1 dupa decrementare;
 
$a = 2
print --$a; // afiseaza 1 - mai intai $a scade cu o unitate, apoi este afisata noua valoare
print $a; // afiseaza 1 - $a are valoarea 1;

Operatori de atribuire

$a = 1; // atribuire simpla
 
$a += 4; // echivalent cu $a = $a + 4; $a are valoarea 5 acum
$a -= 1; // echivalent cu $a = $a - 1;
$a *= 2; // echivalent cu $a = $a * 2;
$a /= 3; // echivalent cu $a = $a / 3;
$a %= 2; // echivalent cu $a = $a % 2; restul impartirii lui $a la 2
 
$a = &$b; /* $a este o referinta la $b, adica ambele variabile fac referire 
   la aceeasi entitate; daca $a se schimba, se va schimba si $b. 
   Altfel spus, $a este un alias pentru $b */
 
$s = "Salut"; // atribuire simpla
$s .= " straine!"; // echivalent $s = $s . " straine!";

Operatori pentru siruri de caractere

In aceasta categorie sunt inclusi 2 operatori ".=" (operator de atribuire prin concatenare - vezi mai sus) si "."
Punctul (.) este operatorul de concatenare (legare) stringuri.
print "Text1" . " legat de " . "Text2"; // afiseaza Text1 legat de Text2
 
$a = "Eu am";
print $a . " mere"; // afiseaza Eu am mere;

Operatori de control al erorilor @

Operatorul @ este folosit pentru a suprima erorile sau avertismentele produse de PHP.
// $nedefinit = 1; - nu se executa, variabila nu e definita
print $nedefinit; // Notice: Undefined variable: nedefinit in file.php on line 120
@print $nedefinit; // nu va genera nici un avertisment / notificare
 
include( "inexistent.php" ); // Warning: include(nedefinit) failed to open...
@include( "inexistent.php" ); // nu afiseaza nici un avertisment

Operatorul de executie ` `

Operatorul de executie permite rularea unor aplicatii sau comenzi ale sistemului de operare direct din PHP. Rezultatul executiei este capturat de script si poate fi prelucrat sau afisat. Operatorul ` ` este echivalent cu functia shell_exec.
# in ambele situatii de mai jos este afisat continutul directrului curent
$output = `ls -al`;
echo "<pre>$output</pre>";
 
$output = shell_exec('ls -al');
echo "<pre>$output</pre>";

Alti operatori

PHP mai dispune de urmatoarele tipuri de operatori:
  • Operatori aritmetici: +, -, *, etc
  • Operatori pe biti: &, |, ^, ~, <<, >>
  • Operatori logici: and, or, xor, &&, ||
  • Operatori de tip: instanceof
  • Operatori pentru vectori: asemanatori celor de comparare, doar ca se aplica vectorilor, operatorul de uniune (+) leaga doi sau mai multi vectori

Siruri de caractere    2 ! 

Sirurile de caractere sunt bucati de text, bine delimitate, folosite in codul-sursa pentru diferite scopuri. PHP prezinta particularitati in modul in care sunt folosite string-urile, dupa cum se poate vedea in exemplele de mai jos.
Important! Sirurile de caractere sunt expresii (entitati ce au si returneaza o valoare). Asadar, un string poate fi folosit, pe langa, afisare, in atribuiri, la verificari, etc. In exemplele ce urmeaza s-a optat pentru afisarea sirurilor.

Siruri de caractere delimitate de ghilimele duble

Sirurile delimitate prin ghilimele duble au particularitatea ca pot interpreta variabilele si caracterele speciale din interiorul lor. Astfel, la evaluarea textului, variabilele existente in interiorul lui sunt inlocuite cu valoarea lor iar rezultatul final este returnat.
<?php
$a = "valoarea variabilei"; // definesc o variabila
print "Textul definit cu ghilimele contine $a"; 
 
// va afisa
// Textul definit cu ghilimele contine valoarea variabilei
?>
O alta particularitate a acestor siruri o reprezinta folosirea backslash-ului (caracterul \). Acesta are o functie speciala de marcare a anumitor caractere care nu pot fi incluse in mod normal intr-un text (din cauza ca sunt ele insele caractere speciale). Din acest motiv backslash-ul poarta numele de escape character.
<?php
print "Ma numesc \"Alex\"!"; // sir ce contine ghilimele, se foloseste \" pentru a afisa ghilimele
 
print "Text afisat pe 3 linii: \n linia 2 si \n linia3";
// atentie, textul e afisat pe 2 linii in sursa HTML cu ajutorul caracterului \n  (new-line) 
// pentru verificare vizualizati sursa paginii (alegeti "View Source" din browser) 
 
print "Am castigat \$30 :D"; // caracterul dolar are un statut aparte (marcheaza variabilele) 
// pentru a afisa semnul $ asa cum este se foloseste \$
 
print "Text cu \\backslash\\."; // intrucat backslash \ este un caracter special el 
// poate fi afisat ca atare intr-un text doar daca este dublat
 
// daca e folosit doar un singur \ PHP ar trata textul diferit:
print "Text fara \backslash\- \nu se afiseaza corec\t.";
 
?>

Siruri de caractere delimitate de ghilimele simple

Sirurile delimitate prin ghilimele simple nu permit interpretarea variabilelor continute si nici a caracterelor speciale cu exceptia \' si \\
<?php
$a = 'valoarea variabilei'; // definesc o variabila
print 'Textul definit cu ghilimele contine $a'; // Textul definit cu ghilimele contine $a
 
print 'Porecla ta e Kelu\' ?'; // sir delimitat de ghilimele simple ce contine un apostrof
print 'Text cu backslash \\'; // sir delimitat de ghilimele simple ce contine un backslash
 
print 'Alte escape chars nu sunt interpretate \n \t \b'; // textul este afisat ca atare
?>

Siruri de caractere delimitate cu notatia speciala <<<

Aceste siruri de caractere au avantajul ca nu necesita marcarea (escaparea) delimitatorilor prin \' sau \". In rest, aceste stringuri sunt tratate in acelasi mod ca cele delimitate de ghilimele duble, in sensul ca permit interpretarea variabilelor si a altor caractere speciale.
<?php
$a = 'valorii lor'; // definesc o variabila
 
print <<<TXT
Text pe mai multe linii. <br />
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii: <br />
- ambii delimitatori (de inceput si sfarsit) trebuie sa aiba acelasi nume
- inainte de primul delimitator se foloseste <<<
- delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter (important!)
- delimitatorul de final sa fie la inceputul liniei (fara spatii inainte)
- dupa delimitatorul final se pune punct si virgula ;
- pot contine ghilimele " sau apostrof ' fara nevoia de a le escapa
- permit interpretarea variabilelor si afisarea $a
TXT;
?>
In versiunile mai noi de PHP (de la 5.3.0) a fost introdusa posibilitatea de a defini siruri prin notatia speciala <<< fara a interpreta variabilele continute. Exemplul de mai jos foloseste un sir astfel definit (vezi diferenta la delimitatorul de inceput).
<?php
$a = 'valoarea'; // definesc o variabila
 
print <<<'TXT'
Incepand cu versiunea 5.3.0 exista un alt mod de delimitare a sirurilor 
in care variabilele si caracterele speciale nu sunt interpretate. <br />
Asadar $a si \n raman asa cum sunt.
TXT;
?>

Operatii cu siruri de caractere    

Mai jos sunt prezentate operatiile uzuale cu siruri de caractere si functiile oferite de limbajul PHP pentru realizarea lor.

Lungimea sirului

$s = "acesta este un text";
$sir = "stiu PHP stiu HTML stiu CSS";
 
# ce lungime are sirul? (numarul de caractere) 
print strlen( $s ); // 19

Cautarea unei secvente

# verific daca un cuvant sau text (in cazul de fata cuvantul 'PHP') apare in 
# sirul exprimat prin variabila $sir
if( strstr( $sir, 'PHP' ) !== false ) print 'gasit';
else print "nu am gasit";
 
# pentru a nu tine cont de litere mari/mici se foloseste stristr
if( stristr( $sir, 'phP' ) !== false ) print 'gasit';

Afisarea unui subsir

# afisez o sectiune din sir
print substr( $sir, 0, 4); // stiu
print substr( $sir, 5 ); // PHP stiu HTML stiu CSS
print substr( $sir, 5, -3 ); // PHP stiu HTML stiu
print substr( $sir, -3 ); // CSS
 
# returnez doar un caracter din string
print $sir{5}; // P
print $sir{ strlen($sir)-1 }; // S

Transformarea sirului

# inlocuirea unor secvente
print str_replace( "stiu", "invat", $sir); // invat PHP invat HTML invat CSS
 
# schimb tipul literelor (mari, mici)
print strtoupper( $s ); // ACESTA ESTE UN TEXT
print strtolower( $sir ); // stiu php stiu html stiu css
print ucfirst( $s ); // Acesta este un text
print ucwords( $s ); // Acesta Este Un Text
 
# sterg spatiile de la inceput si sfarsit: trim, ltrim, rtrim
print trim('      ok        '); // ok
 
# caractere "enter" transformate in <br />
print nl2br( "acesta e afisat pe \n 2 linii" ); // acesta e afisat pe <br /> 2 linii

Impartirea (spargerea) sirului

# impart sirul dupa un caracter, cuvant sau un alt sir
$output1 = explode( "stiu ", $sir ); // impart dupa stiu<spatiu>
/*
Array (
    [0] => PHP 
    [1] => HTML 
    [2] => CSS
)
*/
 
# impart sirul dupa o expresie regulata (regex)
$output2 = preg_split( '/ /', $s ); // impart dupa spatiu
/* 
Array (
    [0] => acesta
    [1] => este
    [2] => un
    [3] => text
)
*/
 
# operatia inversa impartirii unui sir:
$a = implode( 'invat ', $output1 ); // invat PHP invat HTML invat CSS
$b = join( '-', $output2 ); // acesta-este-un-text
Nota: implode si join sunt echivalente (nu exista nici o diferenta intre ele), pe cand explode si preg_splitsunt diferite.

Concatenarea (legarea) sirurilor

print 'Text 1' . " legat de " . 'text 2' . "\n"; // Text 1 legat de text 2
 
// se pot concatena siruri rezultate din alte functii sau din variabile
print ucfirst($sir) . '!!! ' . $s;
Nota: prin concatenarea sirurilor se obtine in final un singur sir, care este tratat ca atare, de sine statator. Altfel spus, prin legarea mai multor siruri se obtine o singura entitate (o singura expresie). Aceasta poate fi transmisa ca parametru unor functii sau instructiuni precum print care accepta un singur argument.

Interpretarea sirului

# parsez un Query String
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
print $first;  // value
print $arr[0]; // foo bar
print $arr[1]; // baz
 
parse_str($str, $output);
print $output['first'];  // value
print $output['arr'][0]; // foo bar
print $output['arr'][1]; // baz

Masuri de siguranta

In cazul in care textul provine din surse nesigure (cum ar fi un formular de comentarii), atunci este indicat sa fie "sterilizat" (sanitized), prin eliminarea elementelor ce pot fi daunatoare (tag-uri HTML, caractere speciale, etc).
print addslashes( "Baiatu' ia vino-ncoa'!" ); # Baiatu\' ia vino-ncoa\'!
# functia inversa este stripslashes();
 
print htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
# afiseaza &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
# functia inversa este htmlspecialchars_decode() 
 
print strip_tags( "<p>E <b>bold</b></p>" ); // E bold
print strip_tags( "<p>E <b>bold</b></p>", '<b>' ); // E <b>bold</b>