sâmbătă, 14 iulie 2012

Instructiuni PHP


Instructiuni uzuale folosite in PHP    0  


Pe langa instructiunile comune amintite in lectia "Notiuni de baza" - instructiunile de afisare (echo, print, printf), instructiunea de atribuire, instructiunea if-then-else si cele de terminare a executiei (exit, die) - exista o serie de alte functii ale limbajului care sunt folosite cu precadere de orice programator.
Detaliem in cele ce urmeaza cateva dintre ele.

Includerea altor scripturi: include() si require()

De multe ori este nevoie sa separam codul nostru in scripturi de sine statatoare. Spre exemplu, putem avea niste declaratii de date intr-un script numit config.php si codul propriu-zip intr-un altul, script.php. Pentru a putea include codul dintr-un fisier separat in scriptul curent se pot folosi doua functii: include si require, cu derivatele lor.
Important de mentionat, in momentul in care un script este inclus cu una din cele 2 functii, el este si executat (interpretat). Spre exemplu, daca avem doua fisiere ca mai jos, la accesarea scriptului script.phpvor fi afisate ambele mesaje - asta pentru ca in urma instructiunii include scriptul config.php a fost si interpretat.
<?php
// codul din config.php
echo 'Sunt in config.php <br />';
 
// script.php
include( 'config.php' );
echo 'Sunt in script.php <br />';
?>
Functia require face acelasi lucru ca si include dar exista o mica diferenta intre cele doua: daca fisierul care este solicitat pentru includere nu exista include va returna un avertisment, continuand executia, pe cand require va returna o eroare iar executia codului va fi intrerupta.
<?php
include( 'fisier_inexistent.php' );  // genereaza un warning si merge mai departe
echo 'Acest mesaj va fi afisat';
 
require( 'fisier_inexistent.php' );  // genereaza o eroare iar executia se intrerupe
echo 'Aceasta instructiune nu va mai fi executata' );
 
?>
Cele doua functii au fiecare cate o varianta: include_once respectiv require_once. Aceste forme, dupa cum si numele o spune, includ fisierul specificat o singura data, astfel incat, daca fisierul solicitat a fost deja inclus la o noua apelare a include_once sau require_once acesta nu va fi inclus a doua oara. Aceste forme ale functiilor sunt utile atunci cand fisierle incluse contin declaratii ce trebuie sa fie facute o singura data.

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, functiamail 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);
?>

Ce să mai citim?

Robotul ADN ar putea ucide celulele canceroase

SARS a fost o boală relativ rară; la sfârșitul epidemiei, în iunie 2003

Fii propriul tău nutriționist

Planet REBOOT

Votăm un Deputat BUN

Ttatăl fondator al Uniunii Europene. 

Colonizarea de pe Marte !


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();
?>

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==');  // afiseaza textul initial
?>

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    1 ! 

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.

!
Taguri PHP, instructiuni, punct si virgula  

Codul PHP trebuie inclus in fisierele ce vor fi deservite utilizatorilor finali si trebuie delimitat de restul continutului prin tagul de inceput <?php si tagul de sfarsit ?>. Practic tot ce se afla in interiorul acestor etichete va fi interpretat ca fiind cod-sursa PHP (cod ce va fi executat de interpretorul PHP). Textul din afara celor 2 taguri este lasat neschimbat, fiind ulterior interpretat de browser. Se pot folosi si alte etichete in functie de configuratia serverului web, dar acestea nu sunt recomandate.
<?php
/* forma recomandata */
?>
 
<script language="php">
/* forma disponibila oricand, putin folosita */
</script>
 
<?
/* taguri scurte, acceptarea lor de catre web-server depinde de configurare */
?>
 
<%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%>
Codul PHP este format din instructiuni - comenzi date catre interpretor, in urma carora se executa ceva. Asa cum s-a mai spus, PHP este folosit in principal pentru a genera cod HTML, asa ca de cele mai multe ori instructiunile folosite sunt cele de afisare. In aplicatii mai complexe se pot insa folosi si instructiuni de conectare la bazele de date, de citire/scriere/manipulare fisiere, intructiuni de trimitere email-uri si altele. Instructiunile se pot grupa in blocuri delimitate de acolade { }. Aceste blocuri, numite si "instructiuni complexe" se comporta ca si cum ar fi o singura instructiune (vezi mai jos exemple de blocuri).
Toate instructiunile (in afara de blocuri) trebuie sa fie terminate cu punct si virgula ( ; ). Lipsa acestuia genereaza o eroare.

Intructiuni uzuale in PHP    4 ! 


echo, print, printf

In multe din scripturile scrise de incepatori (si nu numai) continutul rezultat in urma executiei este un text (care poate fi sau nu cod HTML). Pentru a obtine acest text, secventele de cod trebuie sa contina instructiuni explicite care sa "spuna" intrepretorului ce anume trebuie afisat.
Instructiunile de afisare sunt printecho si printf. Exista si alte modalitati dar aceste 3 instructiuni sunt cele mai uzuale si usor de folosit. Diferente intre ele exista (vezihttp://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40), dar ca idee generala print si echo fac acelasi lucru si poate fi folosita oricare dintre ele. printf este folosita mai rar datorita sintaxei oarecum greoaie.
<?php
# cele 2 instructiuni de mai jos sunt echivalente
print "Text";
echo "Text";
 
# o instructiune echo poate primi mai multi parametrii
echo "Afisez", " un text din ", 4, " bucati";
 
# o singura intstructiune print poate primi doar unul
print "Afisez";
print " un text din ";
print 4;
print  " bucati";
 
# printf este folosita pentru a formata continutul, la fel ca in C/C++
printf( "Am %4.2f lei", 102.1234 ); // afiseaza Am 102.12 lei
?>

Instructiuni de atribuire

Alte instructiuni, la fel de uzuale ca cele de afisare, sunt cele de atribuire. Acestea sunt explicate mai pe larg in sectiunea "Variabile. Constante".

Instructiunea if

In afara de aceste 2 categorii, la fel de des intalnita este instructiunea if. Aceasta se numeste instructiunea de test si este folosita pentru a executa o secventa de cod in functie de valoarea de adevar a unei conditii. Exista mai multe forme, prezentate mai jos:
if( conditie ) instructiune 1;
Aceasta forma permite executarea unei instructiuni numai daca este indeplinita o conditie. Conditia poate fi orice expresie de genul "2 mai mic decat 3", "variabila $a este definita", s.a. tradusa in limbajul PHP.
Instructiunea poate fi simpla (o singura instructiune) sau un bloc (mai multe instructiuni delimitate de acolade). Regula este ca atunci cand este nevoie sa se execute mai mult de o instructiune, trebuie creat un bloc (trebuie folosite acoladele).
Exemplu:
<?php
if( 2 < 4 ) print "2 e mai mic decat 4";
 
if( 3 > 1 ) {
 print "3 e mai mare ca 1 \n";
 print "<br />";
}
?>
Atentie! Daca nu se foloseste un bloc in cadrul instructiunii if, atunci doar prima instructiune dintre cele existente se executa in urma evaluarii conditiei, pe cand celelalte se vor executa intotdeauna, indiferent de rezultatul verificarii. De exemplu:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 )
 print "3 < 2";
 print "3 este mai mic decat 2";
?>
Codul de mai sus va afisa:
Este 3 mai mic decat 2? <br />
3 este mai mic decat 2
Pentru ca nu am inclus cele 2 instructiuni print intr-un bloc, a doua instructiune s-a executat indiferent de valoarea de adevar a conditiei. Codul corect (din punct de vedere logic) ar fi urmatorul, care contine un bloc de instructiuni:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 ) {
 print "3 < 2";
 print "3 este mai mic decat 2";
}
?>

Instructiunea if - else

De multe ori este nevoie sa se specifice o instructiune ce trebuie executata daca nu este indeplinita conditia. In acest caz se foloseste if - else.
if( conditie ) instructiune 1;
else instructiune 2;
Aceasta forma permite executarea unei instructiuni atunci cand se indeplineste conditia sau executarea alteia diferite in caz contrar. Aceleasi observatii ca si mai sus se aplica.

Siruri de caractere    10 ! 

In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de caractere sau string-uri. PHP prezinta particularitati in modul in care sunt folosite stringurile, particularitati ce sunt prezentate in exemplele de mai jos.
Nota: sirurile de caractere reprezinta expresii (entitati ce au/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.
<?php
print "Salut, straine!"; // sir simplu
print 'Salut din nou!'; // sir simplu, delimitat de apostrof
?>
Nota: in acest exemplu nu este nici o diferenta intre modul de afisare a sirurilor delimitate prin ghilimele si cele delimitate prin apostrof. Cu toate astea, PHP trateaza in mod diferit aceste caractere. Mai multe explicatii si exemple sunt prezentate in pagina "Variabile.Constante".
<?php
print "Ma numesc \"Alex\"!"; // sir ce contine ghilimele, se foloseste \"
print 'Porecla ta e Kelu\' ?'; // sir delimitat de ghilimele simple ce contine un apostrof
 
print "Text afisat pe 3 linii: \n linia 2 si \n linia3";
// atentie, textul e afisat pe 2 linii in sursa HTML cu ajutorul \n
 
print "Am castigat \$30 :D"; // caracterul dolar are un statut aparte
// pentru a afisa semnul $ asa cum este se foloseste \$
 
print "Text cu \\backslash\\."; // caracterul \ (numit escape char) poate fi afisat intr-un 
// text daca este dublat; daca e folosit doar un \ PHP ar trata textul diferit:
print "Text fara \backslash\- \nu se afiseaza corec\t.";
 
print <<<TXT 
Text pe mai multe linii. 
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii
- ambii delimitatori trebuie sa aiba acelasi nume
- inainte de primul delimitator se foloseste <<<
- delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter
- delimitatorul de final sa fie la inceputul liniei (fara spatii inainte)
- dupa delimitatorul final se pune punct si virgula ;
TXT;
 
// concatenarea (legarea) sirurilor
print 'Sir1' . " legat de " . 'Sir2'; // Sir1 legat de Sir2
?>

Comentarii in PHP    0 ! 

Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu afecteaza executia unui script si pot fi sterse din cod fara nici un efect.
<?php
// acesta este un comentariu. intreaga linie nu va fi luata in considerare
# la fel ca mai sus - print "hello" - nu se executa
/* comentariu cu delimitator de inceput si sfarsit */
 
print /* partea asta e ignorata */ "Salut!";
 
/* afiseaza
Salut!
*/
?>
Nota: comentariile /* */ nu pot fi imbricate (unele in altele). Exemplul urmator nu este un cod valid.
<?php
/* comentariu /* altul */ inapoi la primul */
?>
Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii (valoroase) despre cum ati gandit codul respectiv.


Terminarea executiei    4 ! 

<?php
exit( "Script terminat" );
die( "Script terminat" );
 
print "Acesta linie nu se afiseaza niciodata";
?>
Nota: instructiunile die si exit sunt echivalente.

Sursa http://php.punctsivirgula.ro

Niciun comentariu:

Trimiteți un comentariu