0% au considerat acest document util (0 voturi)
8 vizualizări73 pagini

C8 Web

Curs Tehnologii Web , Aia anul 3

Încărcat de

Crina Oliana
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
8 vizualizări73 pagini

C8 Web

Curs Tehnologii Web , Aia anul 3

Încărcat de

Crina Oliana
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Universitatea “Constantin Brâncuşi” din Târgu-Jiu

TEHNOLOGII WEB
copyright@[Link]

Curs 8

PHP
(Php: Hypertext Preprocessor)
(partea II)

04.05.2017 Tehnologii WEB - curs 2


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 3


copyright@[Link]

Curs 8

3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 4


copyright@[Link]

1. Instrucţiuni(I)
Ştim că orice program se poate scrie utilizand
numai trei tipuri de structuri:

1. secventiala (sau liniara)


2. alternativa
3. repetitiva conditionata anterior

Pe langa cele trei amintite, oricare limbaj de


nivel inalt implementeaza si alte structuri de
control, introduse in scopul cresterii eficientei
activitatii de programare.
04.05.2017 Tehnologii WEB - curs 5
copyright@[Link]

1. Instrucţiuni(II)
Structurile enumerate (cu exceptia celei
secventiale) pot fi grupate in urmatoarele doua
categorii:
1. structuri de control conditional – controleaza
fluxul programului, executand sau nu anumite
portiuni de cod, in functie de indeplinirea sau
neindeplinirea unor conditii
2. structuri de control repetitive - executa
anumite portiuni de cod de un numar
determinat de ori

04.05.2017 Tehnologii WEB - curs 6


copyright@[Link]

1. Instrucţiuni condiţionale

Structurile de control conditional sunt


implementate in limbajul PHP prin
intermediul instructiunilor:

1. if
2. switch

care permit ramnificarea executiei


scriptului pe diverse cai, in functie de deciziile
luate in timpul executiei acestuia.
04.05.2017 Tehnologii WEB - curs 7
copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 8


copyright@[Link]

1.1. Instructiunea if
Cea mai des utilizata instructiune conditionala
este if.
Instructiunea if are urmatoarea sintaxa:
if (expresie) {
grup de instructiuni
}

 Expresia expresie este evaluata la o valoare logica.


 Daca aceasta este true va fi executata secventa de cod
grup, care include una sau mai multe instructiuni.
 Daca sunt cel putin doua instructiuni, grupul trebuie
inclus obligatoriu intre acolade, in caz contrar fiind
executata numai prima instructiune.
04.05.2017 Tehnologii WEB - curs 9
copyright@[Link]

Observatie:
In mod obisnuit, sunt folosite acoladele chiar daca
grupul contine numai o singura instructiune.

Exemplu:

if ($numar>=10 && $numar<=30) {


echo "Valori intregi cuprinse intre 10 si 30";
}

04.05.2017 Tehnologii WEB - curs 10


copyright@[Link]

Instructiunea if. . .else are urmatoarea sintaxa:

if (expresie) { grup1 }
else { grup2 }

Daca valoarea logica a expresiei expresie -


evaluata de interpretorul PHP este true, va fi executat
grupul de instructiuni grup1, in caz contrar fiind
executat grup2.

04.05.2017 Tehnologii WEB - curs 11


copyright@[Link]

Exemplu:
Daca o valoare este in intervalul [1, 2], se
transmite catre browser valoarea (x+1)/2, altfel
se transmite valoarea (x-1)/2:

<?php
if($x>=1 && $x<=2)
$v=($x+1)/2;
else
$v=($x-1)/2;
echo ($v);
?>

04.05.2017 Tehnologii WEB - curs 12


copyright@[Link]

Instructiunea asociata unei instructiuni if


sau else poate fi ea însasi o instructiune if.

O asemenea instructiune if se numeste


"instructiune if imbricata".

04.05.2017 Tehnologii WEB - curs 13


copyright@[Link]

Exemplu de instructiune if imbricata:

<?php
if ($numar > 10)
if ($numar > 100)
echo "Acesta este un numar mai mare decat 100";
else
echo "Acesta este un numar mai mic decat 100,
dar mai mare decat 10";
else
echo "Acesta este un numar mic";
?>

04.05.2017 Tehnologii WEB - curs 14


copyright@[Link]

O instructiune corelata atât cu instructiunea


if, cât si cu instructiunea else, este
instructiunea elseif.

Când este folosita corect, poate fi mai simplu


de înteles decât o instructiune if imbricata,
logic echivalenta cu aceasta.

04.05.2017 Tehnologii WEB - curs 15


copyright@[Link]

Exemplu de instructiune elseif:

<?php
if ($numar > 100 )
echo "Acesta este un numar mai mare decat 100";
elseif ($numar > 10)
echo "Acesta este un numar mai mic decat 100, dar
mai mare decat 10";
elseif ($numar > 1)
echo "Acesta este un numar mic";
else
echo "Acesta este un numar foarte mic";
?>

04.05.2017 Tehnologii WEB - curs 16


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 17


copyright@[Link]

1.2. Instructiunea switch

A doua instructiune conditionala este switch,


avand urmatoarea sintaxa:

switch (expresie){
case expresie1: grup1; break;
case expresie2: grup2; break;
.....
[default: grup;]
}
Expresia expresie este comparata cu expresie1,
expresie2,… .
04.05.2017 Tehnologii WEB - curs 18
copyright@[Link]

Daca se gaseste o potrivire – pentru


comparatie, se utilizeaza operatorul de
egalitate “==” – (expresiek), va fi executata
secventa de cod corespunzatoare (adica grupk),
ignorand eventualele linii case ramase.

Grupul de instructiuni grup, asociat cazului


default, este executat numai daca, anterior, nu
s-a gasit nici o potrivire.

04.05.2017 Tehnologii WEB - curs 19


copyright@[Link]

Exemplu:
Daca valoarea transmisa pentru x este 1,2,3,4, atunci
valoarea respectiva este retransmisa catre utilizator
alfabetic, altfel, se va transmite un mesaj oarecare:

<?php
switch($x)
{
case (1): echo("unu"); break;
case (2): echo("doi"); break;
case (3): echo("trei"); break;
case (4): echo("patru"); break;
default : echo ("Nu este 1, 2, 3 sau 4");
}
?>
04.05.2017 Tehnologii WEB - curs 20
copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 21


copyright@[Link]

1.3. Instructiuni pentru controlul executiei


iteratiilor

Impreuna cu instructiunile repetitive sunt


utilizate instructiunile break si continue, avand
rolul de a introduce elemente de control
suplimentare in executia acestora.

Instructiunea break are rolul de a intrerupe


executia iteratiei curente si, odata cu aceasta, a
instructiunii in care este utilizata.

04.05.2017 Tehnologii WEB - curs 22


copyright@[Link]

In cazul in care sunt folosite structuri pe


mai multe niveluri (imbricate), break poate
primi un argument de tip intreg prin
intermediul caruia se precizeaza nivelul la care
se va intrerupe executia instructiunilor:

– adica break n, unde n este o expresie care


poate fi evaluata la tipul mentionat
– in plus, break 1 are acelasi efect ca break

04.05.2017 Tehnologii WEB - curs 23


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 24


copyright@[Link]

2. Instructiuni repetitive

 Structurile repetitive (sau de ciclare) sunt


implementate in limbajul PHP prin intermediul
instructiunilor:
– while si for (structura repetitiva conditionata
anterior)
– respectiv do...while (structura repetitiva
conditionata posterior)
fiind utilizate in scopul executiei repetate a unor
secvente de cod.
 Executia unei astfel de secvente poarta numele de
ciclu, iteraţie sau buclă (loop).

04.05.2017 Tehnologii WEB - curs 25


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 26


copyright@[Link]

2.1. Instructiunea while

Sintaxa instructiunii while este urmatoarea:

while (expresie)
{
grup instructiuni
}

 Procesorul PHP executa grupul de instructiuni grup in


mod repetat, atat timp cat expresia expresie este
evaluata cu valoarea logica true.

04.05.2017 Tehnologii WEB - curs 27


copyright@[Link]

Evaluarea expresiei amintite se face la


inceputul fiecarei iteratii, ceea ce inseamna
ca este posibil ca, in cazul in care prima
evaluare genereaza valoarea logica false,
instructiunile incluse in secventa grup sa nu
fie executate niciodata.

Acoladele sunt necesare numai daca grup


contine cel putin doua instructiuni.

04.05.2017 Tehnologii WEB - curs 28


copyright@[Link]

Exemplu:
Se calculeaza suma:
<?php
$s=0; $i=1;
while($i <= 5)
{
$s+=$i + $i;
$i++;
}
echo ($s);
?>

04.05.2017 Tehnologii WEB - curs 29


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 30


copyright@[Link]

2.2. Instructiunea do...while

 Desi utilizarea instructiunii do. . .while nu este


absolut necesara, ea permite obtinerea unei
flexibilitati sporite in scrierea scripturilor.

 Sintaxa acestei instructiuni este urmatoarea:

do
{
grup instructiuni
} while (expresie);

04.05.2017 Tehnologii WEB - curs 31


copyright@[Link]

Instructiunea do... while este asemanatoare


cu while, cu exceptia faptului ca evaluarea
expresiei expresie se face dupa executia
grupului de instructiuni grup rezultand ca
aceasta are loc cel putin o data!

Acoladele sunt necesare numai daca grup


include cel putin doua instructiuni.

04.05.2017 Tehnologii WEB - curs 32


copyright@[Link]

Exemplu:
Se calculeaza suma:
<?php
$s=0; $i=1;
do
{
$s += $i + $i;
$i++;
}while($i <= 5);
echo ($s);
?>

04.05.2017 Tehnologii WEB - curs 33


copyright@[Link]

Curs 8

1. Instrucţiuni conditionale
1.1. Instrucţiunea if
1.2. Instrucţiunea switch
1.3. Instrucţiuni pentru controlul execuţiei
iteraţiilor
2. Instrucţiuni repetitive
2.1. Instrucţiunea while
2.2. Instrucţiunea do while
2.3. Instrucţiunea for

04.05.2017 Tehnologii WEB - curs 34


copyright@[Link]

2.3. Instructiunea for

Sintaxa instructiunii for este urmatoarea:

for (expresie1; expresie2; expresie3)


{
grup instructiuni
}

 Cele trei expresii (argumentele instructiunii), care - de


cele mai multe ori - sunt construite pe baza unei
variabile de ciclare, au urmatoarele semnificatii:

04.05.2017 Tehnologii WEB - curs 35


copyright@[Link]

 expresie1 (expresie de initializare) — este evaluata o


singura data, la inceputul executiei instructiunii for

 expresie2 (expresia de test) - este evaluata la


inceputul fiecarei iteratii

 In functie de rezultatul evaluarii, se executa sau nu


grupul de instructiuni grup

 expresie3 (expresia de modificare) - este folosita


pentru a introduce actiunile care urmeaza a fi
efectuate asupra variabilei de ciclare
(incrementare/decrementare)
04.05.2017 Tehnologii WEB - curs 36
copyright@[Link]

Exemplu:
<?php
for ($i=2; $i<10; $i++) {
echo "Patratul lui ".$i." este " . $i*$i . " .<br />";
}
?>

04.05.2017 Tehnologii WEB - curs 37


copyright@[Link]

Alaturi de instructiunile repetitive


analizate pana aici, in PHP este implementata
si instructiunea foreach, deosebit de utila
pentru traversarea iterativa a tablourilor
asociative sau nesecventiale (in ultimul caz
nefiind posibila folosirea instructiunii for), dar
si a celor indexate numeric.

04.05.2017 Tehnologii WEB - curs 38


copyright@[Link]

Exemplu in care se utilizeaza instructiunea break,


pe un singur nivel intr-un ciclu foreach:

<?php
$tablou=array(1,2,3,4,5,6,7,8,9);
foreach ($tablou as $element)
{
if ($element>5) { break; }
echo $element.", ";
}
?>
Dupa executia scriptului, acesta va afisa
1, 2, 3, 4, 5.

04.05.2017 Tehnologii WEB - curs 39


copyright@[Link]
 Spre deosebire de break, instructiunea continue este folosita
in instructiunile repetitive pentru a intrerupe executia
iteratiei curente, continuandu-se cu urmatoarea.
 Exemplu in care se utilizeaza instructiunea continue:
< ?php
$tablou=array(1,2,3,4,5,6,7,8,9,0);
foreach ($tablou as $element) {
if ($element > 4) { continue; }
echo "Numarul ".$element." este mai mic decat 5;<br
/>";
}
?>
Se afiseaza:
Numarul 1 este mai mic decat 5;
Numarul 2 este mai mic decat 5;
Numarul 3 este mai mic decat 5;
Numarul 4 este mai mic decat 5;
04.05.2017 Tehnologii WEB - curs 40
copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 41


copyright@[Link]

3. Funcţii
În PHP se pot crea funcţii fără prea mari
diferenţe faţă de ce ştim din C/C++.

În programare, o funcţie include o secvenţă de


cod, care realizează o anumită operaţie şi
poate fi apelată în mod repetat, de câte ori
este necesar.

Altfel spus, o funcţie constă dintr-un set de


instrucţiuni care realizează o sarcină specifică.
04.05.2017 Tehnologii WEB - curs 42
copyright@[Link]

Exemplu, un script in care se utilizeaza o functie


pentru calculul ariei unui triunghi si apoi afiseaza aria.

<?php
function aria_t($b, $h)
{ return $b*$h/2; }
$x=3;
$y=8;
echo (aria_t($x, $y));
?>

04.05.2017 Tehnologii WEB - curs 43


copyright@[Link]

 Definitiile functiilor PHP pot fi plasate oriunde in


interiorul unui script, dar este preferabila plasarea la
inceputul acestuia.

 In scopul maririi gradului de reutilizare a functiilor,


se poate folosi drept alternativa plasarea functiilor in
fisiere distincte (avand extensia .php, .inc, etc.),
urmand ca acestea sa fie incluse in scripturi prin
intermediul instructiunilor PHP dedicate.

04.05.2017 Tehnologii WEB - curs 44


copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 45


copyright@[Link]

3.1. Apelarea funcţiilor


Forma generala a unui apel de funcţie este
urmatoarea:

nume_ functie (argument1, argument2, ...)

 Analizand forma prezentata, se poate observa ca


apelul unei functii consta in apelarea numelui sau,
urmat imediat de o lista de argumente actuale (sau
parametri actuali), numarul acestora variind de la o
functie la alta (argument1, argument2, ...).
 Fiecare argument trebuie sa fie o expresie valida,
care poate include si alte apeluri de functii.
04.05.2017 Tehnologii WEB - curs 46
copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 47


copyright@[Link]

3.2. Functii definite de utilizator

In ceea ce priveste modalitatile de creare, functiile PHP


pot fi definite de utilizator sau predefinite.

3.2.1. Definirea functiilor


Pentru definirea unei functii in PHP se utilizeaza
urmatoarea sintaxa:

function nume_functie(argument1, argument2, ...)


{
// Corpul functiei: lista de instructiuni
}
04.05.2017 Tehnologii WEB - curs 48
copyright@[Link]

Se observa ca definitia unei functii include


urmatoarele parti:

1. numele functiei (nume_functie), precedat de


cuvantul-cheie function;

2. lista de argumente formale (care poate sa fie si vida),


inclusa intre doua paranteze rotunde (argument1,
argument2, ...);

3. corpul functiei, care consta din orice secventa valida


de cod, continuta in mod obligatoriu intre acolade,
inclusiv definitiile altor functii sau ale unor clase.

04.05.2017 Tehnologii WEB - curs 49


copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 50


copyright@[Link]

3.2.2. Variabile automatice

Variabilele locale (utilizate in interiorul


functiilor) sunt denumite si automatice,
deoarece ele sunt create automat la
inceputul executiei functiei si distruse, tot
automat la sfarsit.

Din acest motiv, functiile vor “pierde” valorile


variabilelor utilizate in interiorul lor.

04.05.2017 Tehnologii WEB - curs 51


copyright@[Link]

Exemplu:

<?php
function bun_venit($utilizator) {
$mesaj="Bine ai venit, ".$utilizator;
echo $mesaj;
}
bun_venit ("Costica") ;
eroare
echo $mesaj;
?>

In acest exemplu, incercarea de a afisa variabila


locala $mesaj in exteriorul functiei bun_venit() se
soldeaza cu un esec, aceasta fiind o variabila locala.
04.05.2017 Tehnologii WEB - curs 52
copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 53


copyright@[Link]

3.2.3. Functii care întorc valori

 Functiile pot intoarce (sau returna) valori.


 Pentru a intoarce o valoare dintr-o functie, trebuie
realizat - in corpul sau - un apel al instructiunii return,
acesta fiind urmata de o expresie valida:
return expresie
 Apelul instructiunii return opreste imediat executia
functiei, intoarce expresia expresie si transfera
controlul executiei programului pe linia din care s-a
realizat apelul.
 Valorile intoarse pot avea orice tip, inclusiv tablou si
obiect.
04.05.2017 Tehnologii WEB - curs 54
copyright@[Link]

Exemplu:
Fie o functie avand numele cub(), care intoarce
cubul numarului primit ca argument (adica, numarul
ridicat la puterea a treia):

function cub($numar) {
return $numar*$numar*$numar; }

 Dupa ce a fost definita, o functie poate fi utilizata


oriunde se doreste, inclusiv expresiile PHP, ca in
exemplul urmator:

$numar=10;
echo 'Cubul numarului ' .$numar.' este ' .cub($numar);
04.05.2017 Tehnologii WEB - curs 55
Desi functiile nu pot intoarce simultan maicopyright@[Link]
multe valori,
se obtin rezultate similare daca se intorc tablouri, ca in
exemplul urmator:
<?php
function note(){
return array (9, 8, 10); }
list ($fizica, $matematica, $informatica)=note();
echo "Nota la fizica: ".$fizica.";<br />";
echo "Nota la matematica: ".$matematica.";<br />";
echo "Nota la informatica: ".$informatica.".";
?>

04.05.2017 Tehnologii WEB - curs 56


copyright@[Link]

Argumentele pot fi transferate functiilor prin


valoare si prin referinta.

1. Transferul argumentelor prin valoare

 In cazul transferului prin valoare, expresia transmisa


ca argument este evaluata, iar valoarea obtinuta
este atribuita in corpul functiei variabilei cu acelasi
nume.
 Este posibil ca argumentele transferate prin valoare
functiilor sa fie si tablouri, ca in exemplul prezentat
in continuare, in care functia suma_elemente()
intoarce suma elementelor tabloului transferat ca
argument:
04.05.2017 Tehnologii WEB - curs 57
copyright@[Link]
<?php
function suma_elemente($tablou) {
$nrelem=count($tablou);
$sumaelem=0;
for($i=0; $i< $nrelem;$i++) {
$sumaelem += $tablou[$i]; }
return $sumaelem;
}
echo "Suma elementelor tabloului este ".suma_elemente(array(10,5,12)
?>

04.05.2017 Tehnologii WEB - curs 58


copyright@[Link]

2. Transferul argumentelor prin referinta


 Aceasta modalitate de transfer impune ca
argumentul functiei sa fie o variabila.

 In loc sa se refere la copia valorii variabilei transmise,


variabila corespunzatoare din functie se refera chiar
la valoarea variabilei respective, de fiecare data cand
este utilizata.

 Drept rezultat, functia va schimba chiar valoarea


variabilei transferata.

 Exemplu in care este folosita aceasta modalitate de


transfer:
04.05.2017 Tehnologii WEB - curs 59
copyright@[Link]

Transmitere prin
<?php referinta – adresa
function cub(&$numar) { variabilei
$numar=$numar*$numar*$numar;
}
$n=4;
cub($n);
echo $n;
?>

04.05.2017 Tehnologii WEB - curs 60


copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 61


copyright@[Link]

3.2.4. Accesul la variabile declarate in exterior.


Variabile globale

 Fiecare functie are propriul ei set de variabile


(argumentele si/sau cele definite in corpul sau).

 Toate variabilele utilizate in exteriorul oricarei


functiii (cu exceptia variabilelor superglobale) nu
sunt vizibile in interiorul acesteia, ceea ce
inseamna ca ele nu sunt globale.

04.05.2017 Tehnologii WEB - curs 62


copyright@[Link]

 Daca se doreste accesarea in interiorul functiei a unei variabile


folosite in exteriorul sau, trebuie folosit tabloul $GLOBALS, ca in
exemplul urmator:

<?php
function modifica()
{ $GLOBALS["variabila"]=100; }
$variabila=50;
echo $variabila;
modifica();
echo " ".$variabila;
?>

04.05.2017 Tehnologii WEB - curs 63


copyright@[Link]

 De asemenea, este posibil ca una sau mai multe


variabile sa poata fi declarate globale, prin extinderea
domeniului lor de vizibilitate utilizand cuvantul-cheie
global:

[global] $variabila1, $variabila2, ...

 Variabilele declarate globale (adica, in exteriorul


oricarei functii) pot fi utilizate peste tot in script,
inclusiv in definitiile functiilor.

 In scopul precizat, este necesar ce ele sa fie


“importate” in interiorul functiilor folosind cuvantul
cheie global, ca exemplul prezentat in continuare:
04.05.2017 Tehnologii WEB - curs 64
copyright@[Link]
<?php
function modifica(){
global $variabila;
$variabila=10;
echo $variabila;
}
modifica();
$variabila=20;
echo " ".$variabila;
?>

04.05.2017 Tehnologii WEB - curs 65


copyright@[Link]

 Se poate considera ca folosirea variabilelor declarate


globale simplifica activitatea de programare,
eliminand partial necesitatea utilizarii argumentelor
in definitiile functiilor.

 Cu toate acestea, posibilitatea modificarii variabilelor


in orice punct al scriptului, inclusiv in interiorul
functiilor, poate avea drept consecinta scrierea unui
cod dificil de inteles de catre cei care il citesc.

 In locul variabilelor declarate globale, este de preferat


folosirea variabilelor locale, functiile urmand sa
modifice numai acele variabile care le sunt transmise
ca argumente prin referinta.
04.05.2017 Tehnologii WEB - curs 66
copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 67


copyright@[Link]

3.2.5. Functii recursive

 Ca si in alte limbaje de programare, in PHP pot fi


definite si utilizate functiile recursive.
 Se spune ca o functie care se apeleaza pe ea insasi este
o functie recursiva, metoda numindu-se recursivitate.
 Ca si intr-o structura ciclica, intr-o functie recursiva
trebuie precizata o conditie de incheiere a executiei.
 Daca o functie se autoapeleaza direct, se spune ca se
produce recursivitatea directa.
 In schimb, daca o functie se apeleaza pe ea insasi, prin
intermediul altei functii, se spune ca se produce
recursivitatea indirecta.
 In mod obisnuit, este utilizata recursivitatea directa.
04.05.2017 Tehnologii WEB - curs 68
copyright@[Link]

In exemplul urmator este prezentata o functie


(factorial ()) in care se utilizeaza recursivitatea directa:

<?php
function factorial($n) {
if($n==1)
return 1;
else
return $n*factorial($n-1);
}
echo "Factorial = ".factorial(5);
?>

04.05.2017 Tehnologii WEB - curs 69


copyright@[Link]

Curs 8
3. Funcţii
3.1. Apelarea funcţiilor
3.2. Funcţii definite de utilizator
3.2.1. Definirea funcţiilor
3.2.2. Variabile automatice
3.2.3. Funcţii care întorc valori
3.2.4. Accesul la variabile declarate în exterior.
Variabile globale
3.2.5. Funcţii recursive
3.2.6. Terminarea execuţiei unui script

04.05.2017 Tehnologii WEB - curs 70


copyright@[Link]

3.2.6. Terminarea executiei unui script


O instructiune return determina sistarea
executiei functiei care o contine.
In cazul în care se doreste sistarea prelucrarii
unui întreg script, se poate invoca functia exit():

<?php
function stop() {
exit(); }
echo "<br />Unu...";
echo "<br />Doi...";
stop();
echo "<br />Trei...";
?>
04.05.2017 Tehnologii WEB - curs 71
copyright@[Link]

Dupa executie scriptul afiseaza:


Unu...
Doi...

 Rezultatul acestui script include cuvintele "Unu"


si "Doi", dar nu si cuvântul "Trei".

 Prin apelarea functiei "stop()" se executa corpul


functiei respective; la invocarea functiei, exit(),
executia scriptului se încheie.

04.05.2017 Tehnologii WEB - curs 72


copyright@[Link]

Bibliografie:
Adrian Runceanu, Mihaela Runceanu, Tehnologii si
aplicatii web – îndrumar de laborator, Editura Academica
Brâncuşi, Târgu-Jiu, 2009, ISBN 978-973-144-302-7

Întrebări?

04.05.2017 Tehnologii WEB - curs 73

S-ar putea să vă placă și