Download presentation
Presentation is loading. Please wait.
1
Funksionet ne PHP PhD, MS, Under Leksion 8
2
Cfare eshte nje funksion?
Nje funksion eshte nje seksion kodi me nje qellim te caktuar, te cilit i vendoset nje emer unik. Emri i funksionit mund te thirret ne pika te ndryshme te programit, duke bere qe ky seksion kodi te ekzekutohet ne menyre te perseritur sipas nevojes. Kjo eshte e leverdisshme sepse i njejti seksion kodi shkruhet vetem njehere, por mund te modifikohet me lehtesi sipas nevojes.
3
Krijimi i nje funksioni dhe thirrja e tij
Ne PHP mund te krijoni nje funksion ne pika te ndryshme te programit. Megjithate per qellime organizimi, mund te jete me e pershtatshme qe te vendosen te gjitha funksionet qe do te perdoren ne skript, ne fillin te skedarit te skriptit. Nje menyre tjeter eshte qe te vendosen te gjithe funksionet ne nje skedar te vecante (te njohur edhe si librari). Kjo eshte e pershtatshme sepse te njejtit funksione mund t’i perdorni ne disa aplikacione, pa patur nevoje qe t’i rishkruani ato.
4
Krijimi i nje funksioni dhe thirrja e tij
Krijimi i nje funksioni perbehet nga 3 pjese: Emri i funksionit Kllapat qe permbajne parametrat e inputit, te ndare me presje. Trupi i funksionit, qe perfshihet brenda kllapave te perdredhura {} Forma e pergjithshme e nje funksioni eshte: function function_name (optional $arg1, $arg2, ..., $argn) { code section }
5
Krijimi i nje funksioni dhe thirrja e tij
Emri i funksionit duhet te ndjeke ato rregulla leksikore qe aplikohen per emrat e variablave. Kujdes: Emrat e variablave jane case-sensitive, ndersa emrat e funksioneve jo. Kllapat () pas emrit te funksionit jane te detyrueshme te vendosen, edhe po nuk pati parametra inputi. Nuk eshte e nevojshme qe te deklarohen tipet e te dhenave te parametrave te inputit. (Por per t’u siguruar qe parametrat e inputit, po perdoren ashtu sic duhet, mund te testoni tipin e te dhenave me funksionin gettype() ).
6
Krijimi i nje funksioni dhe thirrja e tij
Rezultati i funksionit Percaktimi i funksionit Thirrja e funksionit
7
Percaktimi i funksioneve ne PHP
Le te shohim dy funksione, ku secili merr nje argument. I pari merr nje string dhe e printon ate duke I shtuar nje element <br />. Funksioni i dyte ben te njejten gje, por shton dy elemente <br /> ne fund te stringut. Me pas do shohim shembuj funksionesh qe marrin me shume argumente dhe kthejne vlera:
8
Percaktimi i funksioneve ne PHP
10
Defining Functions In PHP
11
Defining Functions In PHP
12
Krijimi i nje funksioni dhe thirrja e tij
Shembull: Supozoni qe doni te krijoni nje funksion qe afishon nje shenim te zakonshem per copyright ne nje faqe web: function display_copyright() { print "Copyright © 2013 PHP-Powered Recipes. All Rights Reserved."; } Duke patur parasysh qe siti web ka shume faqe, ju mjafton te therrisni kete funksion ne fund te cdo faqeje, duke eliminuar nevojen per te rishkruar te njejtin informacion. Keshtu qe nese duhet te ndryshoni vitin, nga 2013 ne 2014, mjafton ta ndryshoni ate ne funksion.
13
Krijimi i nje funksioni dhe thirrja e tij
Bejme nje ndryshim ne funksionin display_copyright() dhe i kalojme atij nje parameter. Supozojme se duam te kemi te njejtin copyright per disa site te ndryshme, por ndryshon vetem emri i sitit: function display_copyright($site_name) { print "Copyright © 2013 $site_name. All Rights Reserved."; }
14
Funksionet e nderfutura
Eshte e mundur te nderfuten funksione brenda funksioneve. Duke rishikuar shembullin e meparshem, mund te eliminojme nevojen per te ndryshuar daten, duke thirrur funksionin e PHP-se date() : function display_copyright($site_name) { print "Copyright ©". date("Y"). " $site_name. All Rights Reserved."; } Parametri input Y i funksionit date() specifikon qe vlera e kthimit duhet te jete viti aktual, i formatuar duke perdorur 4 shifra. Duke kosideruar qe konfigurimi i dates se sistemit eshte i sakte, PHP do te afishoje vitin e sakte sa here qe funksioni thirret ne skript. Funksioni date() i PHP-se eshte shume fleksibel, duke ofruar 25 lloje te formatimit te dates dhe ores.
15
Funksionet e nderfutura
Gjithashtu mund te nderfuten edhe deklarimet e funksioneve, brenda njeri-tjetrit. Megjithate kjo nuk do te thote qe nje funksion eshte i kufizuar te perdoret vetem brenda funksionit ne te cilin eshte deklaruar. Per me teper, nje funksion i nderfutur, nuk trashegon parametrat e inputit te prindit te tij, por parametrat duhet t’i kalohen ashtu sic i kalohen funksioneve te tjere.
16
Shembull: Perdorimi i funksioneve te nderfutur
function display_footer($site_name) { function display_copyright($site_name) { print "Copyright © ". date("Y"). " $site_name. All Rights Reserved."; } print "<center> <a href = \"\">home</a> | <a href = \"\">recipes</a> | <a href =\"\">events</a><br> <a href = \"\">tutorials</a> | <a href = \"\">about</a> | <a href =\"\">contact us</a><br>"; display_copyright($site_name); print "</center>"; $site_name = "PHP Recipes"; display_footer($site_name);
17
Shembull: Perdorimi i funksioneve te nderfutur
Nga ekzekutimi i ketij skripti afishohet: home | recipes | events tutorials | about | contact us Copyright © 2013 PHP Recipes. All Rights Reserved. Shenim: Ne mund ta therrisnim funksionin display_copyright() nga jashte funksionit display_footer(), ashtu sic thirrem fuksionin display_footer() ne shembullin e meparshem. PHP nuk e suporton konceptin e funksioneve te mbrojtur ( protected functions). Megjithese funksionet e nderfutur nuk jane te mbrojtur nga te thirrurit ne cdo pjese te skriptit, ata nuk mund te thirren deri pasi te thirret funksioni prind i tyre. Nese perpiqeni te thirrni nje fuksion te nderfutur perpara se te thirrni prindin e tij, do te shfaqet nje mesazh gabimi.
18
Kthimi i vlerave nga nje funksion
Shpesh na nevojitet te kthehet nje vlere nga nje funksion. Kjo realizohet duke i caktuar nje variabel thirrjes se fuksionit (pra thirrja e funksionit t’i jepet si vlere nje variabli) Vlerat e kthimit te funksionit mund te jene te cfaredo tipi, duke perfshire ketu edhe listat dhe vektoret. Shprehja return perdoret per te kthyer vlera nga funksioni: Vlerat e kthimit ne shprehjen return mund te jene te ndryshme: Vlera mund te jete e shkruar ne kod: return 4; Vlera mund te jete rezultat i nje shprehjeje: return $a/$b; Ajo mund te jete vlere e kthyer nga thirrja e nje funksioni tjeter: return anotherFunction($an_argument); Ne shembullin ne vijim, llogaritet taksa e shitjeve per nje cmim te caktuar dhe me pas kthehet kostoja totale.
19
Kthimi i vlerave nga nje funksion
Le te shohim me pare nje permbledhje te pseudokodit: Supozojme se jane caktuar disa vlera si cmime produktesh, $price, dhe taksa shitjesh, $tax. Deklarojme funksionin calculate_cost(). Ai pranon dy parametra taksen e shitjeve dhe cmimin e produktit. Llogarit koston totale dhe perdor return per te kthyer koston e llogaritur. Therret calculate_cost(), duke ruajtur ne variablin $total_cost vleren qe do te kthehet nga funksioni. Afishon mesazhin perkates
20
Shembull: Fuksioni qe llogarit taksen e shitjeve
$price = 24.99; $tax = 0.06; function calculate_cost($tax, $price) { $sales_tax = $tax; return $price + ($price * $sales_tax); } // Vereni se si e kthen vleren funksioni calculate_cost(). $total_cost = calculate_cost ($tax, $price); // rrumbullakos koston ne dy shifra pas presjes. $total_cost = round($total_cost, 2); print "Total cost: ".$total_cost; // $total_cost = 26.49
21
Kthimi i vlerave nga nje funksion
Shenim: Nje funksion qe nuk kthen nje vlere njihet edhe si procedure. Nje tjeter menyre per te perdorur vlerat e kthimit eshte qe te vendoset thirrja e funksionit direkt ne nje shprehje kushti ose iterative. Shembulli i meposhtem krahason faturen totale te nje perdoruesi me nje kredit limit. Nese check_limit() vleresohet true, i thuhet perdoruesit per te vazhduar blerjen. Perndryshe informohet qe eshte kaluar limiti i kreditit
22
Shembull: Krahasimi i nje fature te perdoruesit me nje limit krediti
$cost = ; $limit = ; function check_limit($total_cost, $credit_limit) { if ($total_cost > $credit_limit) : return 0; endif; return 1; } if (check_limit($cost, $limit)) : print "Keep shopping!"; else : print "Please lower your total bill to less than $".$limit."!";
23
Funksionet Rekursive Funksionet rekursive perdoren per te kryer procedura te perseritura. Ato kursejne hapesire ne memorie dhe eliminojne tepricat ne skript. Shembull: Perdorimi i nje funksioni rekursiv per te mbledhur nje bashkesi numrash te plote: function summation ($count) { if ($count != 0) : return $count + summation($count− 1); endif; } $sum = summation(10); print "Summation = $sum"; Outputi eshte: Summation = 55
24
Fusha e veprimit te variablave
Nje variabel qe deklarohet brenda nje funksioni mbetet lokal per ate funksion. Me fjale te tjera. Ky variabel nuk eshte i vlefshem jashte funksionit ose brenda funksioneve te tjere. Kjo quhet fushe veprimi (scope) per nje variabel. Kjo gjithashtu nenkupton qe emrat e variablave nuk kerkohet te jene unike neper funksione te ndryshme. Pra mund te kemi variabla me te njejtin emer ne funksione te ndryshme. Shembulli qe vijon ilustron fushen e veprimit te nje variabli. Vereni qe te dy funksionet functionOne dhe functionTwo deklarojne variabla me emrin myInt.
25
Defining Functions In PHP
26
Percaktimi i Funksioneve ne PHP
Brenda funksionit variabli eshte i dukshem (eshte ne fushen e tij te veprimit) Jashte funksionit variabli nuk eshte i dukshem (eshte jashte fushes se tij te veprimit)
27
Fusha e veprimit te variablave
Gjithashtu nje variabel i deklaruar jashte funksionit, nuk eshte i aksesueshem nga brenda funksionit. Zakonisht, nese nje funksioni i nevojitet nje informacion nga jashte, ky informacion duhet t’i kalohet atij si argument i funksionit. Megjithate, ka raste kur ju mund te deshironi te aksesoni nje variabel te rendesishem, pa e kaluar ate si argument. Ne PHP, kjo realizohet duke perdorur shprehjen global e cila e lejon nje funksion qe te aksesoje nje variabel qe eshte deklaruar jashte tij. Me shume se nje variabel mund te deklarohen si globale njeheresh duke i ndare emrat e tyre me presje. Shembulli qe vijon e ilustron kete koncept.
28
Variable Scope
29
Fusha e veprimit te variablave
Brenda functionOne variabli $alpha eshte i dukshem nepermjet shprehjes global. Vini re qe funksioni e ka modifikuar vleren e $alpha. Brenda functionTwo variabli $alpha gjithashtu eshte i dukshem nepermjet shprehjes global. Shprehja e trete echo ne kete funksion do te gjeneroje gabim kur perpiqet t’i referohet variablit $beta qe eshte jashte fushes se tij te veprimit. Jashte funksioneve, variablat jane perseri brenda fushes se tyre te veprimit dhe vini re vleren e modifikuar te variablit $alpha.
30
Ruajtja e gjendjes ndermjet thirrjeve te funksionit
Variablat lokale vijne ne ekzistence kur thirret funksioni dhe vdesin kur perfundon ekzekutimi i funksionit. PSh: Supozoni se doni qe nje funksion te ruaje gjurme te numrit te hereve qe ai eshte thirrur, ne menyre qe te krijohen rreshta te numeruar ne skript. Natyrisht kete do ta realizonit duke perdorur shprehjen global dhe duke e aksesuar variablin e deklaruar jashte funksionit. Shembulli qe vijon ilustron kete teknike.
31
Saving State Between Function Calls
32
Ruajtja e gjendjes ndermjet thirrjeve te funksionit
33
Ruajtja e gjendjes ndermjet thirrjeve te funksionit
Shembulli qe pame, i jep funksionit nje lloj “kujtese” nepermjet perdorimit te nje variabli global. Por, kjo nuk eshte nje rruge shume elegante. Pse? Pergjigje: Funksionet, qe perdorin shprehjen global, nuk mund te lexohen si blloqe te vecanta kodi. Per t’i lexuar apo riperdorur ato, ju duhet te kontrolloni per variablat globale qe ata manipulojne. Nese nuk arrini ta bene kete, funksioni juaj eshte i padobishem. Ketu kyn ne loje shprehja static ne PHP. Deklarimi i nje variabli brenda nje funksioni si statik, ben qe variabli te mbetet lokal per funksionin dhe funksioni e kujton vleren e tij nga njeri ekzekutim ne tjetrin.
34
Saving State Between Function Calls
35
Ruajtja e gjendjes ndermjet thirrjeve te funksionit
36
Vendosja e vlerave default per Argumentet
Per disa funksione, qe kerkojne nje ose me shume argumente, ju mund te specifikoni qe disa nga argumentet jane opsionale. Kjo i ben funksionet tuaja me fleksibel. Per ilustrim, le te ndertojme nje funksion qe merr nje string dhe nje numer te plote qe i korrespondon madhesise ne te cilen do te printohet teksti ne browser.
37
Setting Default Values For Arguments
38
Vendosja e vlerave default per Argumentet
Ne menyre qe argumenti te behet opsional, ju mund t’i jepni vlere argumentit, brenda kllapava ne percaktimin e funksionit. Keshtu vendosim nje vlere default per argumentin, nese nuk jepet asnje vlere per te kur thirret funksioni. Shembulli qe vijon e modifikon shembullin e meparshem. KUJDES Ju mund te vendosni sa te doni argumente opsionale, por kujdes me rendin e argumenteve. Nese keni vendosur nje argument opsional ne percaktimin e funksionit, atehere te gjithe argumentet qe vijne pas tij duhet te jene opsionale. Pra ju nuk mund te keni argumentin e pare opsional, te dytin te detyrueshem, te tretin opsional, e keshtu me rradhe. Rendi duhet te jete: Te gjithe argument e detyrueshem duhet te jene ne fillim, dhe me pas te vendosen te gjithe argumentet opsionale.
39
Parametri i dyte ka te percaktuar nje vlere default, qe e ben ate nje parameter opsional per funksionin, Thirrja e dyte dhe e trete e funksionit, e perdor kete vlere default.
40
Kalimi i variablave me reference tek funksionet
Kur u kaloni argumente funksioneve, ato ruhen si kopje ne variablat parameter. Kjo dmth qe cdo ndryshim qe u behet ketyre variablave nga funksioni, eshte lokal per funksionin dhe nuk reflektohet jashte tij.
41
Kalimi i variablave me reference tek funksionet
Ne menyre default ne PHP, variablat u kalohen funksioneve me ane te vleres. Pra, vetem kopje lokale te variablave perdoren nga funksionet dhe vlerat origjinale te variablave nuk jane te aksesueshme nga funksionet. Si mund te lejoni qe nje funksion te modifikoje nje variabel qe i dergohet atij? Ju duhet te krijoni nje reference per tek variabli. Operatori i references ne PHP eshte & (ampersand). Duke vendosur nje ampersand perpara argumentit ne percaktimin e nje funksioni, krijoni nje reference per tek variabli dhe lejoni qe funksioni te modifikoje vleren origjinale te variablit.
42
Kalimi i variablave me reference tek funksionet
Argumenti $num kalohet si reference meqe ai paraprihet nga operatori &.
43
Pyetje???
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.