Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Php


Index » educatie » » informatica » Php
» Limbajul PHP - Ce poate face PHP?


Limbajul PHP - Ce poate face PHP?


Limbajul PHP

1. Introducere

PHP (PHP: Hypertext Prepocessor), cunoscut in versiunile mai vechi si sub numele de PHP/FI (Personal Homepage/Form Interpreter), initial a fost gandit a fi o simpla aplicatie CGI pentru interpretarea formularelor definte prin HTML si procesate de un program scris intr-un limbaj Perl, script shell, executat pe server. In cazul interfetei CGI era necesara permisiunea de a rula programe pe server, ceea ce ducea la lacune in securitate si in plus la disocierea de documentul HTML a programului care procesa datele.

PHP (in versiunea curenta PHP 4.0) reprezinta un pachet puternic care ofera un limbaj de programare accesibil din cadrul fisierelor HTML, limbaj asemanator cu Perl sau C, plus suport pentru manipularea bazelor de date intr-un dialect SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.) si acces la sisteme hipermedia precum Hyperwave. De asemeni, PHP suporta incarcarea fisierelor de pe calculatorul client: upload (standard propus de E. Nebel si L. Masinter de la Xerox, descris in RFC 1867) si ofera suport pentru cookies (mecanism de stocare a datelor in navigatorul client pentru identificarea utilizatorilor, propus de Netscape).



Aceasta aplicatie este disponibila gratuit pe Internet, pentru medii Unix si mai nou pentru medii Windows (inclusiv sursele), integrandu-se in popularul sever Apache.

Istoria PHP-ului incepe la sfarsitul anului 1994, cand Rasmus Lerdorf dezvolta prima versiune, ca proiect personal. PHP-ul este facut public in debutul anului 1995 sub denumirea de Personal Home Page Tools, fiind considerat un analizor simplist care interpreta cateva macrouri ce puteau fi incluse in cadrul documentelor HTML, permitand contorizarea accesului la paginile Web sau accesarea unei carti de oaspeti (guestbook). Analizorul a fost rescris la mijlocul aceluiasi an si denumit PHP/FI 2.0, unde FI era o alta aplicatie scrisa de Rasmus Lenford, un interpreter de formulare HTML. A fost adaugat si suportul pentru bazele de date mSQL si astfel PHP/FI a inceput sa aiba succes, fiind disponibil gratuit pe Web. Se estimeaza ca la sfarsitul lui 1996 cel putin 15 mii de site-uri Web utilizau PHP/FI, iar in anul 1997 numarul acestora era de 50 de mii.

Programatorii Zeev Suraski si Andi Gutmans rescriu analizorul PHP si noua aplicatie formeaza nucleul versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 2.0. Relativ recent, la inceputul anului 2000, a fost facuta publica versiunea PHP 4.0, utilizand puternicul motor de scriptare Zend si oferind suport nu numai pentru servrul Apache ci si pentru alte servere Web. De asemeni, PHP 4.0 ofera posibilitatea accesarii documentelor XML via DOM.

Se estimeaza ca numarul site-urilor care folosesc in prezent PHP este de peste un milion. Deja, pe Web, exista o multitudine de aplicatii si utilitare concepute in PHP, care se regasesc grupate si in asa-numitul PEAR (PHP Extension and Add-on Repository).

Ce este PHP?

PHP este un limbaj de script care functioneaza alaturi de un server Web.

Exemplul 1.1.1 (exemplu introductiv):

<html>
<head>
<title>Exemple</title>
</head>
<body>
<?php
echo 'Salut, eu sunt un script PHP!';
?>
</body>
</html>

Este de notat diferenta cu alte limbaje script CGI scrise in limbaje precum Perl sau C: in loc de a scrie un program cu o multitudine de linii de comanda afisate in final intr-o pagina HTML, veti scrie o pagina HTML cu codul inclus pentru a realiza o actiune precisa (in cazul nostru se va afisa un text).

Codul PHP este inclus intre tag-urile speciale de inceput si de sfarsit care permit utilizatorului sa treaca din 'modul HTML' in 'modul PHP'.

Fata de alte limbaje script, precum Javascript, la PHP codul se executa pe server. Daca pe serverul Web se afla un script similar, clientul nu va primi decat rezultatul executiei scriptului, fara a avea nici o posibilitate de acces la codul care a produs rezultatul. Va puteti configura serverul de Web sa prelucreze (analizeze) toate fisierele HTML ca fisiere PHP. Astfel nu exista nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice.

Ce poate face PHP?

Limbajul PHP poseda aceleasi functii ca alte limbaje permitand sa se scrie scripturi CGI, sa colecteze date si sa genereze dinamic pagini web sau sa trimita si sa primeasca cookies.

Marea calitate si cel mai mare avantaj al limbajului PHP este suportul cu un numar mare de baze de date. A realiza o pagina web dinamic cu o baza de date este extrem de simplu. Urmatoarele baze de date sunt suportate de catre PHP: dBase, FrontBase, Sesam, Sybase, Oracle, ODBC, MySQL, . .

Limbajul PHP are deasemenea suport pentru diverse servicii server utilizand protocoale precum IMAP, SNMP, NNTP, POP3 si HTTP

2. Structura limbajului

Sintaxa fundamentala. Trecerea de la HMTL la PHP

Exista patru moduri pentru a trece de la HMTL la PHP.

Exemplul 2.1.1:

1. <? echo ( 'Cea mai simpla cale de introduceren'); ?>


2. <?php echo ( 'Daca vreti sa afisati documente XML sau XHTML faceti ca aici.n'); ?>


3. <script language='php'>
echo ( 'Anumite editoare nu accepta tag-uri necunoscute (de exemplu FrontPage)');
</script>


4. <% echo ( 'Puteti utiliza taguri in stil Asp.'); %>

A doua metoda este cea mai utilizata, pentru ca permite o implementare usoara a PHP-ului cu generatia urmatoare XHTML.

Separatori de instructiuni

Instructiunile sunt separate, ca in C sau ca in Perl, prin punct si virgula la sfarsitul unei instructiuni. Semnele de sfarsit, '?>', implica sfarsitul instructiunii, deci implicit punct si vigula.

Exemplul 2.1.2:

<?php
echo 'Acesta este un test';
?>
<?php echo 'Acesta este un alt test' ?>

Comentarii

Comentariile pot fi facute in stilul celor din limbajele C, C++ si shell-urile UNIX (bash de exemplu).

Exemplul 2.1.3:

echo 'Acesta este un test'; // Acesta este un comentariu pe o linie in stil C++


/* Acesta este un comentariu pe mai multe linii;
inca o linie de comentariu */
echo 'Acesta este un alt test';
echo 'Ultimul test'; # Un comentariu in stil Unix

Stilul de comentariu pe o linie tine pana la sfarsitul liniei sau al blocului curent al codului PHP.

Exemplul 2.1.4:

<h1>Acesta este un <? # echo 'simplu'; ?> exemplu.</h1>
<p>Linia de mai sus va afisa: 'Acesta este un exemplu.'</p>

3. Variabile

Reprezentarea varibilelor

Variabilele in PHP sunt reprezentate de semnul dolar, '$', in fata numelui variabilei. Numele variabilelor sunt formate dupa aceleasi reguli ca alte etichete din PHP. Un nume de variabila valid trebuie sa inceapa printr-o litera sau liniuta de subliniere, '_', urmata de un sir de litere, cifre sau liniute de subliniere.

PHP este un limbaj case-senzitiv (exemplul 2.3.1).

$var = 'Jean';
$Var = 'Paul';
echo '$var, $Var'; // Afiseaza Jean, Paul
$4site = 'nu inca'; // Incorect: incepe printr-o cifra
$_4site = 'nu inca'; // Corect: incepe printr-o liniuta de subliniere
$maïs = 'jaune'; // Corect: 'ï' este ASCII 239

In PHP 3, variabilele sunt asignate intotdeauna prin valoare. Astfel, cand atribuim unei variabile o expresie, intreaga valoare a expresiei este copiata in variabila destinatie. Aceasta inseamna, de exemplu, ca atribuind unei variabile valoarea altei variabile, modificarea unei variabile nu va avea efect asupra celeilalte.

PHP 4 afera si un alt mod pentru atribuirea de valori variabilelor: prin referinta. Aceasta inseamna ca noua variabila nu face decat sa refere variabila originala (cu alte cuvinte, 'devine un alias pentru' sau 'pointeza la' variabila originala). In acest caz, cele doua variabile sunt interdependente, modificarea uneia determinand modificarea celeilalte. Deoarece nu are loc copierea si actualizarea valorilor, asignarea prin referinta este mai rapida. Diferenta devine notabila in cazul executiilor repetate sau la asignarea tablourilor mari, respectiv a abiectelor.

Pentru a atribui prin referinta, se introduce un ampersand, '&', in fata variabilei care este atribuita (variabila sursa). In exemplul urmator, Numele meu este Pierre se va afisa de doua ori

Exemplul 2.3.2

$aaa = 'Pierre'; // Atribui valoarea Pierre lui $aaa
$bar = &$aaa; /* Atribuire prin referinta
$aaa si $bar refera aceeasi locatie de memorie */
$bar = 'Numele meu este $bar'; // Modific $bar , deci inmplicit si $aaa
echo $aaa;
echo $bar;

Observatie: numai variabilele pot fi asigante prin referinta.

4. Functii

Functiile definite de utilizator

O functie poate fi definita de utilizator conform sintaxei urmatoare:

function nume_functie( $arg1, $arg2, , $argN)


Intr-o functie poate sa apara orice cod PHP valid, chiar alte functii si definitii de clase.

In PHP3, functiile trebuie sa fie definite inainte de a fi referentiate; in PHP4 nu exista o asemenea restrictie. PHP nu sustine functii de supraincarcare, nu se poate anula definirea sau redefini o functie declarata anterior. PHP3 nu accepta numar variabil de argumente in antetul functiilor, dar accepta argumente implicite.

Argumentul functiilor

Informatiile pot fi transmise functiilor print-o lista de argumente. In aceasta lista variabilele si/sau constantele sunt delimitate prin virgula.

PHP accepta transmiterea argumentelor prin valoare (implicit), prin referinta si argumente cu valori implicite. Listele cu numar variabil de argumente sunt acceptate doar in versiunea PHP4. Un efect similar poate fi obtinut in PHP3 transmitand functiei un tablou de argumente.

Exemplu:

function takes_array( $input)

Transmiterea argumentelor prin referinta

Implicit, argumentele functiilor sunt transmise prin valoare (in sensul ca schimbarea valorii argumentului in interiorul functiei nu se reflecta si in afara functiei). Daca doriti sa permiteti unei functii sa modifice argumentele sale, acestea trebuie transmise prin referinta.

Daca vreti ca un argument al unei functii sa fie transmis prin referinta, trebuie sa precedati cu un '&' numele argumentului in definitia functiei, ca in exemplul de mai jos

(exemplul 2.8.1):

function add_some_extra( &$string)

$str = 'This is a string, ';
add_some_extra( $str);
echo $str; // Se va afisa This is a string, and something extra.

Daca vreti sa transmiteti o variabila prin referinta unei functii care nu face acest lucru in mod implicit, trebuie sa precedati cu un '&' numele argumentului in apelul functiei

(exemplul 2.8.2):

function my_function( $string)

$str = 'This is a string, ';
my_function( $str);
echo $str; // Se va afisa This is a string,
my_function( &$str);
echo $str; // Se va afisa This is a string, and something extra.

5. Clase si obiecte

O clasa este o colectie de variabile si de functii care utilizeaza aceste variabile. O clasa se defineste utilizand urmatoarea sintaxa:

class Cart


// Elimina $num articole de tipul $artnr
function remove_item( $artnr, $num)

else

}


Constructia de mai sus defineste o clasa Cart formata dintr-un tablou asociativ de articole si doua functii pentru a adauga si a elimina articole din tablou.

Nota: in PHP4 sunt permisi doar initializatori constanti pentru variabile var. Pentru initializatorii neconstanti trebuie folositi constructori.

Acest exemplu nu va functiona PHP4 */
class TestClass

/* Asa trebuie procedat */
class TestClass


Clasele sunt tipuri. Pentru a crea o variabila de tipul dorit se foloseste operatorul new.

$cart = new Cart;
$cart->add_item( '10', 1);


Acest cod creaza un obiect $cart din clasa Cart. Functia add_item() a acestui obiect este apelata pentru a adauga un articol cu numarul 10 in tabloul $cart->items.

Clasele pot fi extensii ale altor clase. Aceasta notiune se numeste mostenire. Clasa extinsa sau derivata poseda toate variabilele si functiile clasei de baza alaturi de variabilele si functiile definite in extensie. Acest lucrul se realizeaza utilizand cuvantul cheie extends. Mostenirea multipla nu este acceptata.

class Named_Cart extends Cart


Codul de mai sus defineste o clasa Named_Cart care are toate variabilele si functiile din Cart plus o variabila suplimentara $owner si o functie suplimentara set_owner(). Puteti crea un obiect $ncart cu operatorul new si apoi puteti seta proprietatile obiectului.

Exemplu:

$ncart = new Named_Cart; // Creaza un nou obiect
$ncart->set_owner( 'Kris'); // Seteaza proprietatea owner
print $ncart->owner;
$ncart->add_item( '10', 1); // Mostenire de la clasa de baza

In functiile unei clase variabila $this inseamna obiectul curent. Pentru a accesa o variabila sau functie a obiectului curent, numita $proba, trebuie sa utilizam constructia $this->proba. Atat in interiorul cat si in afara obiectului, nu este necesar semnul '$' ( in fata unei 'proprietati') cand accesati o proprietate a acestuia.

Exemplu:

$ncart->owner = 'Chris'; // Fara $ in fata proprietatii $owner

$ncart->$owner;
// Este invalid deoarece $ncart->$owner = $ncart->''

$my_var = 'owner';
$ncart->$my_var = 'Chris';
// Este corect deoarece $ncart->$my_var = $ncart->owner

Constructorii sunt functiile dintr-o clasa care au acelasi nume cu clasa. Ei sunt automat apelati cand creati o noua instanta a clasei.

class Auto_Cart extends Cart


Acest cod defineste o clasa Auto_Cart care extinde clasa Cart plus un constructor care initializeaza obiectul cu un articol, avand numarul 10 de fiecare data cand un nou obiect de tipul Auto_Cart este creat cu operatorul new.

Constructorii pot avea argumente (pot fi optionale), caracteristica care ii face foarte utili.

class Constructor_Cart extends Cart



$default_cart = new Constructor_Cart;
$different_cart = new Constructor_Cart( '20', 17);

6. Referinte

Ce sunt referintele?

In PHP referintele reprezinta posibilitatea de a referi continutul unei variabile prin nume diferite. In PHP numele unei variabile difera de continutul variabilei, deci un anumit continut poate fi identificat prin nume diferite.

Ce fac referintele?

Referintele PHP permit referirea aceluiasi continut prin doua variabile diferite. Cand scrieti:

$a = &$b;

inseamna ca $a si $b indica aceeasi variabila.

Al doilea lucru pe care il realizeaza referintele este sa transmita variabile prin referinta. Acest lucru se realizeaza folosind variabila locala a functiei si variabila cu care se face apelul drept referinte catre acelasi continut.

Exemplu:

function fct( &$var)


$a = 5;
fct( $a);

Apelul de mai sus va duce la obtinerea valorii 6 in variabila $a. Acest lucru se intampla deoarece in functia fct() variabila $var refera acelasi continut ca si variabila $a.

Al treilea lucru pe care il pot face referintele este intoarcerea unei valori prin referinta.

Ce nu sunt referintele?

Referintele nu sunt pointeri. Astfel, urmatoarea constructie nu va intoarce rezultatul asteptat:

function fct( &$var)


fct( &bar);

In momentul apelului $var va intra in corespondenta cu $bar din apelator, dar va fi redirectata catre $GLOBALS[ 'baz'].

Intoarcerea referintelor

Intoarcerea prin referinta este utila cand doriti sa utilizati functii pentru a gasi variabile care ar trebui legate cu acestea. Cand returnati referinte folositi sintaxa:

function &find_var( $param)


$fnc = &find_var( $bar);

In acest exemplu proprietatea obiectului returnat de functia find_var() trebuie setata, nu copia acesteia cum s-ar intampla daca nu am utiliza sintaxa prin referinta.

Observatie: spre deosebire de transmiterea parametrilor, trebuie sa utilizati '&' in ambele locuri pentru a indica ce intoarceti prin referintaa (si nu prin valoare cum este uzual) si pentru a spune cui i se atribuie respectiva referinta.

Resetarea referintelor

Cand resetati o referinta rupeti practic legatura dintre numele si continutul variabilei. Aceasta nu inseamna ca acel continut al variabilei va fi distrus.

Exemplu:

$a = 1;
$b = &$a;
unset( $a);

Secventa de cod de mai sus nu va reseta $b ci numai variabila $a.

Multe constructii sintactice in PHP sunt implementate prin mecanismul referintelor, deci modul lor de functionare se poate aplica acestor constructii. Unele constructii, cum ar fi transmiterea si intoarcerea prin referinta, au fost deja mentionate. Alte constructii care folosesc referintele sunt referintele globale. Cand declarati variabila $var ca variabila globala creati defapt o referinta la o variabila globala. Semnificatia este aceeasi cu :

$var = &$GLOBALS[ 'var'];

Aceasta inseamna, spre exemplu, ca, resetarea variabilei $var nu va reseta si variabila globala asociata.

$this

Intr-o metoda obiectuala $this refera intotdeauna obiectul apelator.





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate