Presentation is loading. Please wait.

Presentation is loading. Please wait.

Variablat dhe Funksionet

Similar presentations


Presentation on theme: "Variablat dhe Funksionet"— Presentation transcript:

1 Variablat dhe Funksionet
Leksion 5

2 Fusha e veprimit te variablave
Fusha e veprimit mund te percaktohet si rangu i vlefshmerise, qe ka nje variabel ne programin ne te cilin eshte deklaruar. Fushat e veprimit te variablave ne PHP mund te jene kater tipesh: Variabla lokale Parametra funksioni Variabla globale Variabla statike

3 Variablat lokale Nje variabel i deklaruar ne nje funksion konsiderohet lokal; dmth, atij mund t’i referohemi vetem brenda atij funksioni. Cdo vleredhenie e ketij variabli jashte atij funksioni, do te konsiderohet si nje variabel krejt i ndryshem nga ai qe permbahet brenda funksionit. Vereni qe kur dilni nga funksioni ne te cilin eshte deklaruar variabli lokal, ai variabel dhe vlera korresponduese e tij do te shkaterrohen. Shembull: $x = 4; function assignx () { $x = 0; print "\$x inside function is $x. <br>"; } assignx(); print "\$x outside of function is $x. <br>"; Nga ekzekutimi i ketij kodi do te afishohet: $x inside function is 0. $x outside of function is 4.

4 Variablat globale Ne ndryshim nga variablat lokale, nje variabel global mund te aksesohet ne çdo pjese e programit. Megjithate, ne menyre qe te modifikohet, nje variabel global duhet te deklarohet ne menyre eksplicite qe eshte global, ne funksionin ne te cilin do te modifikohet. Kjo realizohet duke vendosur fjalen kyçe GLOBAL perpara variablit qe do te njihet si global. Kur vendoset kjo fjale kyçe perpara nje variabli ekzistues, i tregohet PHP-se qe te perdoret variabli qe ka ate emer. Shembull: $somevar = 15; function addit() { GLOBAL $somevar; $somevar++; print "Somevar is $somevar"; } addit(); Vlera e $somevar do te jete 16. Megjithate po te hiqni rreshtin: variabli $somevar do te marre vleren 1, meqe $somevar atehere do te konsiderohej si variabel lokal brenda funksionit addit(). Nga ky deklarim lokal, variablit do t’i jepej vlera 0, ne menyre implicite, dhe me pas do te inkrementohej me 1 dhe do te afishohej vlera 1.

5 Variablat globale Nje menyre tjeter per te deklaruar nje variabel global eshte duke perdorur vektorin $GLOBALS te PHP-se. Psh: $somevar = 15; function addit() { $GLOBALS["somevar"]; $somevar++; } addit(); print "Somevar is $somevar"; Pavaresisht nga menyra qe zgjidhni per te konvertuar nje variabel ne global, duhet te keni kujdes kur i perdorni ato, per shkak te rezultateve te papritura qe mund te merrni nga perdorimi i gabuar i tyre.

6 Variablat statike Ne ndryshim nga variablat qe deklarohen si parametra funksioni, te cilet shkaterrohen kur dalim nga funksioni, nje variabel statik nuk do ta humbase vleren e tij dhe do ta ruaje akoma ate vlere nese funksioni do te ekzekutohet serish. Mund te deklaroni nje variabel statik, duke perdorur fjalen kyçe STATIC perpara emrit te variablit. Shembull: function keep_track() { STATIC $count = 0; $count++; print $count; print "<br>"; } keep_track();

7 Variablat statike Nese variabli $count nuk do te ishte statik, do te afishohej: 1 Por meqe $count eshte statik, ai do ta mbaje vleren e tij e meparshme sa here qe ekzekutohet funksioni. Pra rezultati do te ishte: 2 3 Fusha e veprimit Statike eshte shume e dobishme per funksionet rekursive.

8 Vleredhenia e variablave
Vleredhenia sipas vleres Kjo eshte menyra me e zakonshme e vleredhenies, ne te cilen thjesht i jepet nje vlere vendit ne memorie qe perfaqesohet nga nje emer variabli. Psh: $vehicle = "car"; $amount = 10.23; Ne adresen e memories qe perfaqesohet nga $vehicle vendoset stringu "car“, ndersa ne ate qe perfaqesohet nga $amount jepet vlera Vleredhenia sipas vleres mund te kryhet edhe me ane te vleres se kthimit te nje funksioni: function simple () { return 5; } $return_value = simple(); Funksioni simple() nuk ben gje tjeter veçse i kthen vleren 5, variablit qe e thirri kete funksion.

9 Vleredhenia e variablave
Vleredhienia sipas references Menyra tjeter per t’i dhene vlere nje variabli eshte duke iu referuar vendit ne memorie qe ze nje variabel tjeter. Ne vend qe te kopjohet vlera aktuale ne variablin destinacion, nje shenjues (ose reference) ne vendin e memories, vendoset ne variablin te cilit po i jepet vlere, keshtuqe nuk ndodh asnje kopjim. Vleredhenia sipas references realizohet duke vendosur nje ampersand (&) perpara variablit burim: $dessert = "cake"; $dessert2 = &$dessert; $dessert2 = "cookies"; print "$dessert2 <br>"; // prints cookies print $dessert; // Again, prints cookies Siç mund te shihet nga ky kod pasi ne variablin $dessert2 eshte vendosur referenca per ne vendin e memories qe ze variabli $dessert, atehere çdo modifiikim qe i behet $dessert2 do t’i behet edhe $dessert ose çdo variabli tjeter qe shenjon ne te njejtin vend te memories.

10 Variablat e ndryshueshme
Eshte e nevojshme qe te perdoren variabla, permbajtja e te cileve mund te trajtohet dinamikisht si nje variabel ne vetevete. Psh. Nje vleredhenie tipike: $recipe = "spaghetti"; Vleren "spaghetti" mund ta trajtojme si nje variabel duke vendosur nje shenje dollari ($) perpara emrit te variablit dhe t’i jepet atij nje tjeter vlere. $$recipe = "& meatballs"; Kjo ne fakt i jep vleren "& meatballs" nje variabli te quajtur "spaghetti". Prandaj keto dy rreshta kodi prodhojne te njejtin rezultat: print $recipe $spaghetti; print $recipe $($recipe); Rezultati i te dyjave eshte: "spaghetti & meatballs".

11 Funksionet

12 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.

13 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.

14 Krijimi i nje funksioni dhe thirrja e tij
Krijimi i nje funksioni konsiston ne 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 }

15 Krijimi i nje funksioni dhe thirrja e tij
Emri i funksionit duhet te ndjeke ato rregulla leksikore qe aplikohen per emrat e variablave. 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() ).

16 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 © 2010 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 2010 ne 2011, mjafton ta ndryshoni ate ne funksion.

17 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 &copy 2010 $site_name. All Rights Reserved."; }

18 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 &copy". 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 kofigurimi 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.

19 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.

20 Shembull: Perdorimi i funksioneve te nderfutur
function display_footer($site_name) { function display_copyright($site_name) { print "Copyright &copy ". 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);

21 Shembull: Perdorimi i funksioneve te nderfutur
Nga ekzekutimi i ketij skripti afishohet: home | recipes | events tutorials | about | contact us Copyright © 2010 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.

22 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. Ne shembullin ne vijim, llogaritet taksa e shitjeve per nje cmim te caktuar dhe me pas kthehet kostoja totale.

23 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

24 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

25 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 perdoruesi per te vazhduar blerjen. Perndryshe informohet qe eshte kaluar limiti i kreditit

26 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."!";

27 Shembull: Kthimi i disa vlerave nga nje funksion
Eshte e mundur te kthehen disa vlera njekohesisht nga nje funksion duke perdorur nje liste. Funksioni i meposhtem kthen tre vite te rekomanduara per nje vere te caktuar. $label = "merlot"; // This function merely makes use of various arrays and a variable variable to return multiple values. function best_years($label) { $merlot = array(1987, 1983, 1977); $zinfandel = array(1992, 1990, 1989); return $$label; } // a list() Is used to display the wine's best years. list ($yr_one, $yr_two, $yr_three) = best_years($label); print "$label had three particularly remarkable years: $yr_one, $yr_two, and $yr_three."; Outputi eshte: merlot had three particularly remarkable years: 1987, 1983, and 1977.

28 Shembull: Kthimi i disa vlerave nga nje funksion
Deklarohet funksioni best_years(), i cili merr nje parameter si input. Parametri $label eshte tipi i veres per te cilin perdoruesi deshiron te shohe 3 vitet e rekomanduara. Deklarohen dy vektore, $merlot, dhe $zinfandel. Secili vektor mban 3 vitet e rekomanduara per ate tip vere. Ne shprehjen $$label, fillimisht interpretohet variabli $label dhe pastaj interpretohet vlera e tij, si nje variabel tjeter. Ne kete rast vektori merlot kthehet si nje liste. Printohet mesazhi perkates, qe informon perdoruesin per vitet e rekomanduara.

29 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

30 Funksionet Variabel Nje funksion variabel eshte nje thirrje dinamike e nje funksioni, emri i te cilit percaktohet ne kohen e ekzekutimit. Keto funksione mund te reduktojne ne menyre te ndjeshme madhesine e kodit dhe kompleksitetin, duke eliminuar shpesh shprehjet if te panevojshme. Thirrje a nje funksioni variabel nuk eshte gje tjeter veçse nje emer variabli me dy kllapa, ku vendosen bashkesia e parametrave te inputit. Forma e pergjithshme eshte: $function_name(); Psh: Supozojme se perdoruesit i jepet mundesia qe te shfaqe informacionin ne dy gjuhe anglisht dhe italisht. Funksioni i meposhtem afishon nje mesazh welcome ne gjuhen perkatese.

31 Shembull: Perdorimi i nje funksioni variabel te percaktuar nga nje variabel input
// italian welcome message. function italian() { print "Benvenuti al PHP Recipes."; } // english welcome message function english() { print "Welcome to PHP Recipes."; // set the user language to italian $language = "italian"; // execute the variable function $language();

32 Ndertimi i librarive te funksioneve
Librarite e funksioneve jane nje nga menyrat me te pershtashme per te kursyer kohe kur ndertoni aplikacione. Psh: Mund te keni shkruar disa funksione per renditjen e vektoreve, te cilet mund t’i perdorni ne aplikacione te tjera. Ne kete rast eshte e pershtashme te vendosen te gjithe ne nje skedar te veçante dhe t’i vendoset nje emer i lehte per t’u kujtuar, si psh: array_sorting.inc

33 Shembull: Nje librari e thjeshte funksionesh
<? // file: array_sorting.inc // purpose: library containing functions used for sorting arrays. // date: July 17, 2000 function merge_sort($array, $tmparray, $right, $left) { . . . } function bubble_sort($array, $n) { function quick_sort($array, $right, $left) { ?>

34 Ndertimi i librarive te funksioneve (1)
Kjo librari funksionesh array_sorting.inc, vepron si nje depozite per te gjithe funksionet e renditjes se vektoreve. Kjo eshte e pershtatshme sepse mund t’i organizoni funksionet sipas qellimit, ne menyre qe te gjenden kollaj kur eshte e nevojshme Zakonisht eshte mire qe te vendosen komente te fillim te çdo librarie, ne menyre qe te kemi nje ide se çfare permban ajo. Pasi i keni ndertuar librarite e funksioneve tuaja, mund te perdorni shprehjet include() dhe require() te PHP-se per te perfshire skedarin e librarise brenda nje skripti ne menyre qe te gjithe funksionet e kesaj librarie te behen te vlefshem per skriptin.

35 Ndertimi i librarive te funksioneve (2)
Sintaksa e pergjithshme eshte: include(path/filename); require(path/filename); Ose sintaksa tjeter: include "path/filename"; require "path/filename"; Ku "path" i referohet ose pathit relativ ose atij absolut te skedarit.

36 Ndertimi i librarive te funksioneve (3)
Megjithese include() dhe require() perdoren per te njejtin qellim, ka dy ndryshime te rendesishme ndermjet tyre: 1. Me ane te require(), skedari do te perfshihet ne skriptin ne te cilin eshte vendosur require(), pavaresisht se ku eshte i vendosur require(). Psh: Nese require() eshte vendosur brenda nje shprehjeje if, e cila vleresohet me false, skedari do te perfshihet gjithsesi. 2. Nese require() nuk arrin qe te ekzekutohet, atehere skripti, ne te cilin eshte thirrur require(), ndalon, ndersa ne rastin e include() skripti vazhdon ekzekutimin. Psh: nje arsye pse mund te deshtoje ne ekzekutim nje require() eshte vendosja e pathit te skedarit te gabuar.

37 Ndertimi i librarive te funksioneve (3)
Shembuj: 1. <?php if (expression) { include (filename); } ?> 2. <?php require (filename); Nqs expression=false ne rastin e pare skedari nuk do te perfshihet, ndersa ne rastin e dyte po.

38 Ndertimi i librarive te funksioneve (3)
Per t’u siguruar qe nje skedar eshte perfshire vetem nje here brenda nje skripti, mund te perdorim funksionet: include_once() dhe require_once() Sintaksa e pergjithshme eshte: include_once(path/filename); require_once(path/filename); Keto funksione jane perkatesisht njelloj si include() dhe require() vetem se ato fillimisht kontrollojne nese skedari eshte perfshire me pare ne skript.

39 Shembull: Perfshirja e nje librarie ne nje skript
// Supozojme se libraria array_sorting.inc ndodhet ne te njejten direktori me skriptin. include ("array_sorting.inc"); // Tani jeni te lire te perdorni çdo funksion te array_sorting.inc. $some_array = (50, 42, 35, 46); // Perdorimi i funksionit bubble_sort() $sorted_array = bubble_sort($some_array, 1);

40 Pyetje???


Download ppt "Variablat dhe Funksionet"

Similar presentations


Ads by Google