bubu Posted July 23, 2006 Report Share Posted July 23, 2006 Funkcijas vajadzīgas, lai nerakstītu divās vai vairāk vietās vienu un to pašu kodu. Piemēram, iedomājies, ka tev izvelkot datus no datubāzes tie speciāli jāapstrādā. Nu teiksim jāizvāc visi X Y un W burti ārā no teksta (piemērs mākslīgs, bet nu var jau būt ka jāveic sarežģītākas un garākas darbības). Tad padomā, vai tu katreiz izpildot mysql_query un velkot datus ārā rakstīsi str_replace(array('X', 'Y', 'W'), '', $text); vai arī uztaisīsi funkciju: function blahblah($x) { return str_replace(array('X', 'Y', 'W'), '', $x); } Un tad apstrādājot datus pielietosi šo funkciju echo blahblah($row["text"]); Padomā ko tu iegūsti - 1) ja nu tiem XYW burtiem nāk jauns burts klāt, piemēram Q. Tad tev jāmaina būs tikai vienā vietā - funkcijā. Ja tev nebūtu funkcijas, tad tev būtu jāmeklē pa visu savu kodu, kur notiek šī darbība un jāmaina daudzās vietās . 2) ja nu tā darbība ir sarežģīta un tu secini, ka tajā ir kļūda, kuru vajag izlabot - funkcijai jālabo vienā vietā, bez funkcijas - daudzās. Tās ir tikai dažas priekšrocības. Vēl ir arī tāda lieta kā koda struktūra. Iedomājies, tev ir viens garš garš fails, kurā tu veic n-darbības: apstrādā GET/POST mainīgos, lasi datus no datubāzes, apstrādā tos un izvadi tos. Ja to visu rakstīsi vienā garā garā palagā, pašam būs grūti orientēties un saprast, kur kas notiek. Tāpēc var veidot funkcijas katrai darbībai, kuras izsauc savā galvenajā failā: <?php require_once("manas_funkcijas.php"); process_request(); query_database(); process_data(); output_data(); ?> Savukārt šīs izsaucamās funkcijas iekšienē dalītos sīkākās funkcijās. Vai saproti, ka šādu kodu ir lasīt daudz ērtāk un daudz saprotamāk, nekā garus palagus, ko dažkārt te publicē? Protams, realitātē šīs funkcijas var nebūt viena pēc otras tā tīri izsaucamas, bet iekļautas kādos if nosacījumos vai for ciklos. Link to comment Share on other sites More sharing options...
direktors Posted July 23, 2006 Author Report Share Posted July 23, 2006 bubu, es taču izmantoju funkcijas un apzinos to lietderību. kā reizi dažus postus iepriekš runāju, ka man ir funkcija kas piesledzas datubāzei. un attiecigi katrā lapā sākumā iemetu piesledzzamies_db(); pēc tā parādījās komentāri ka nemāku lietot funkcijas. kur tad mana vaina? Link to comment Share on other sites More sharing options...
john.brown Posted July 23, 2006 Report Share Posted July 23, 2006 (edited) Nu, jā, kļūda drīzāk bija iekš variabļu redzamības apgabalu saprašanas :) T.b. ja tu inicializē variabli funkcijā, tas ir pieejams tikai šajā funkcijā. Piemērs zemāk nestrādās: function init_var() { $var = "kaut kas te"; } init_var(); echo $var; Lai tiktu pie tā variabļa klāt ārpus funkcijas, viņu vajag atgriezt (return): function init_var() { $var = "kaut kas te"; return($var); } $var = init_var(); echo $var; Tavā gadījumā tā bija ar $connection :) Edited July 23, 2006 by john.brown Link to comment Share on other sites More sharing options...
direktors Posted July 23, 2006 Author Report Share Posted July 23, 2006 paldies john.brown. vismaz pa tēmu piemērs. tiks labots! Link to comment Share on other sites More sharing options...
bubu Posted July 23, 2006 Report Share Posted July 23, 2006 Un ko tavuprāt es rādīju iepriekšējā piemērā ccc funkcijā? Link to comment Share on other sites More sharing options...
direktors Posted July 23, 2006 Author Report Share Posted July 23, 2006 no tava piemera sapratu tikvien ka tu gribi lai es noraadu paramterus funkcijai.. Link to comment Share on other sites More sharing options...
Recommended Posts