Functii in PHP
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 print, empty, 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:
'; for( $i = 0; $i < 12; $i++ ) { # intrucat se cunosc nr de pasi, se foloseste structura repetitiva for echo "{$luni[ $i ]}\n"; } echo ''; } # mai jos vom folosi functia pentru a afisa un drop-down cu lunile anului: echo 'Luna inceperii activitatii: '; afisLuna(); echo '
Luna terminarii activitatii: '; afisLuna(); ?>
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 '
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:
'; } function alta() { print 'Azi e o zi obisnuita
'; } # 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:
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.
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:
De asemenea, functiile pot primi date ce pot fi folosite in interiorul lor pentru diverse prelucrari. Aceste date de intrare sunt transmise sub forma de parametri.
Pentru ca o functie sa poata primi parametri, aceasta trebuie sa ii declare intre parantezele rounde, ca in exemplul de mai jos
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:
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:
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:
---------------------------
Facilitati avansate referitoare la functii
Pe langa functionalitatile standard, explicate mai sus, limbajul PHP dispune de alte caracteristici mai avansate. Astfel, pot fi definite functii ce pot primi oricati parametri este nevoie, pot fi executate functii de fiecare data la terminarea executiei unui script PHP, etc. Acestea nu sunt insa lucruri folosite de zi cu zi, asa ca prezentarea lor depaseste scopul acestui site. Nu trebuie sa le invatati acum, ci doar sa stiti ca exista.
Mai jos amintite sunt cateva din functiile avansate ce pot fi folosite:
call_user_func - alternativa pentru apelul simplu al unei functii definite de utilizator; numele functiei poate fi stocat intr-o variabila, programatorul putand astfel apela functii diferite in situatii diferite
call_user_func_array - la fel ca ma sus, doar ca este folosita atunci cand functia ce trebuie apelata are mai mult de un parametru
function_exists - folosita pentru a verifica daca o functie este definita
create_function - folosita pentru a defini o functie 'on the fly', atunci cand codul PHP se executa
register_shutdown_function - folosita pentru a specifica o functie care sa se execute la finalul executiei codului PHP
func_num_args, func_get_args, func_get_arg - functii ajutatoare folosite in cazul functiilor apelate cu un numar variabil de parametri
II. Notiuni de baza ⇒ 11. Functii in PHP
Moderatori: Moderators, Founder
CEO
Posts
3802
3802
Închis
Mergi la
- ADMINISTRARE FORUM
- ↳ Zona membrilor
- ↳ Regulament
- ↳ Anunțuri
- ↳ Cerere Grad
- ↳ Parteneriate
- ↳ Prezintă-te
- ↳ Cerere DNS
- ↳ SERVER DISCORD
- PUBLICITATE
- ↳ Promovare servere gaming
- ↳ Cs 1.6
- ↳ SA-MP
- ↳ Cs2
- ↳ Minecraft
- ↳ Metin 2
- ↳ GTA V
- ↳ Promovare Site
- ZONA GENERALA
- ↳ RESURSE GAMING
- ↳ Counter-Strike 1.6
- ↳ AmxModX
- ↳ Plugin-uri
- ↳ Addons-uri
- ↳ Tutoriale
- ↳ Sprays
- ↳ Harti
- ↳ CFG-uri
- ↳ Kit-uri
- ↳ Skin-uri
- ↳ Grand Theft Auto V
- ↳ Tutoriale
- ↳ Moduri
- ↳ Skin-uri
- ↳ League Of Legends
- ↳ Noutăți
- ↳ Skinuri
- ↳ Abilitati campioni
- ↳ Povestea campionilor
- ↳ Champion Spotlight
- ↳ Video-uri
- ↳ PUBG
- ↳ Tutoriale
- ↳ Skin-uri
- ↳ Video-uri
- ↳ News
- ↳ GTA San Andreas
- ↳ DOWNLOAD GTA SAN ANDREAS CURAT
- ↳ Tutoriale
- ↳ GameModes
- ↳ Resurse
- ↳ Skin
- ↳ Filescripts
- ↳ Videoclipuri
- ↳ Mod-uri
- ↳ Mod Pack's
- ↳ Minecraft
- ↳ Maps
- ↳ Skins
- ↳ Texture Packs
- ↳ Mods
- ↳ Plugins
- ↳ Metin2
- ↳ Videoclipuri
- ↳ Ghiduri Joc
- ↳ Tutoriale web
- ↳ Client-uri
- ↳ Scripting Homepage Gratuit
- ↳ Systeme C++/Py
- ↳ Știri Gaming
- ↳ Descarca Jocuri
- ↳ [PC] Descarca Jocuri
- ↳ Counter-Strike 1.6 (toate versiunile)
- ↳ Counter-Strike 2
- ↳ GTA San Andreas .rar
- ↳ League of Legends
- ↳ PUBG MOBILE PC
- ↳ Metin2
- ↳ Minecraft
- ↳ Farming Simulator 2020
- ↳ Farming Simulator 2016
- ↳ Simulare
- ↳ Actiune
- ↳ Strategie
- ↳ Aventura
- ↳ Arcade
- ↳ Puzzle
- ↳ Curse
- ↳ Sport
- ↳ Trivia
- ↳ Cazinou
- ↳ [MOBIL] Descarca Jocuri
- ↳ Masini
- ↳ Limbaje de programare
- ↳ HTML
- ↳ Tutoriale
- ↳ Index-uri
- ↳ Școala HTML
- ↳ MySql
- ↳ C / C++ / C#
- ↳ CSS
- ↳ Javascript
- ↳ PHP
- ↳ I. Introducere
- ↳ II. Notiuni de baza
- ↳ III. Notiuni avansate
- ↳ IV. Aplicatii
- ↳ V. Extra
- ↳ .htaccess
- ↳ Python
- ↳ Java
- ↳ Platforme Web
- ↳ WordPress
- ↳ Teme WordPress
- ↳ MyBB
- ↳ Descarcare MyBB 1.8.38
- ↳ Limba Română - download
- ↳ Plugin-uri
- ↳ Teme
- ↳ phpBB
- ↳ Download phpBB 3.3.14 (zip)
- ↳ Limba Română - download
- ↳ Teme
- ↳ Plugin-uri
- ↳ IPS
- ↳ Teme
- ↳ Jocuri , Videoclipuri , Filme !
- ↳ Jocuri Forum
- ↳ Videoclipuri
- ↳ Caterincă
- ↳ Filme
- ↳ Horror
- ↳ Crima
- ↳ Mister
- ↳ Actiune
- ↳ Aventura
- ↳ SF
- ↳ Western
- ↳ Razboi
- ↳ Drama
- ↳ Comedie
- ↳ Dragoste
- ↳ Stiri Filme
- ↳ Descarcă gratuit muzică
- ↳ Manele
- ↳ Romaneasca
- ↳ Petrecere
- ↳ Trap
- ↳ Albume Manele
- ↳ Albume Petrecere
- ↳ Dezvoltare WEB
- ↳ Știri IT
- ↳ Software/Programe
- ↳ Windows
- ↳ Arhivă