Valcha Posted June 5, 2006 Report Share Posted June 5, 2006 Man jautājums no programmēšanas teorijas. Es rakstu kodu tā, ka man ir index lapa un tad ir pāris faili, kas glabā funkcijas. Es parasti lapas sākumā inklūdoju nepieciešamos lielos inc failus. Kāds draugs to ieraudzīja un izteicās, ka nav labi inklūdot garus failus ar daudz jo daudz funkcijām. Viņa pieeja ir tāda, ka index lapā tiek noteikts pie scenārija if (nospiests tas) { inklude fails_ar_funkcijaam funkcija() } elseif (nospiests tas2) { inklude fails_ar_funkcijaam2 funkcija2() } Kad būs lielāka ātrdarbība? Man liekas gari rakstīt inklūdes katrā augšējā IFā, ja man pa visu lapu tādu ir kādi 20 ja ne 40. Iepriekš pateicos par padomu. Link to comment Share on other sites More sharing options...
bubu Posted June 5, 2006 Report Share Posted June 5, 2006 Tavam draugam taisnība. Jo inklūde piespiež php interpretētāju parsēt jauno failu. A ja koda darbība nenonāk pie inklūdes, tad viņam mazāk darba - mazāk koda ko parsēt. Link to comment Share on other sites More sharing options...
Valcha Posted June 5, 2006 Author Report Share Posted June 5, 2006 Un kas notiek, ja man ir daudz mazu inklūžu failiņu, un dažus labus sanāk viena scenārija izpildīšanai atkārtoti inklūdot? Vai tā ir kļūda, vai tas liek vēlreiz parsēt failu? Link to comment Share on other sites More sharing options...
bubu Posted June 5, 2006 Report Share Posted June 5, 2006 Ja tu rakstīsi include/require ('fails..'), tad tas fails inklūdēsies un izpildīsies katru reizi pa jaunam. Bet ja rakstīsi include_once/require_once (..) tad fails inklūdēsies tikai pirmo reizi, un katrs nākamais inklūdes izsaukums ignorēsies. RTFM. Link to comment Share on other sites More sharing options...
Delfins Posted June 5, 2006 Report Share Posted June 5, 2006 pārsēs pa jaunam, jo iepriekšējie mainīgie var tikt mainīti, no kā arī atkarīgs to mazo include gala rezultāts (ja tāda atkarība pastāv protams)... Protams, ja vajag kādas globālas/neatkarīgas no skripta mainīgo `kūlās f-jas` (viss tiek padots argumentos), tad var uzcept atcevišķu php moduli :) Teiksim visādas texta konversijas, array-darbības... tas tā... kā alternatīva ātrdarbības palielināšanai... Link to comment Share on other sites More sharing options...
SkaKri Posted June 6, 2006 Report Share Posted June 6, 2006 vienkāršāk nav visas f-cijas samest include failā, un ja, piemēram, tiek dots $_POST['mana_super_funkcija'] - tad arī includojam? Link to comment Share on other sites More sharing options...
Delfins Posted June 6, 2006 Report Share Posted June 6, 2006 (edited) Un ja netiek dots - dabūjam fatal error? ir arī vēl viena perversā metode funcs.php function x($a) { return include 'func.x.body.inc.php'; } function y($b) { return include 'func.y.body.inc.php'; } func.x.body.inc.php <?php $a = $a . 'just a simple example'; return $a; ?> Un vispār, visus šitos preloadingus/optimizāciju risina ar pre-compiled php, to biš ar optimizatoriem, kuri jau uztaisa opkodus... Edited June 6, 2006 by Delfins Link to comment Share on other sites More sharing options...
v3rb0 Posted June 6, 2006 Report Share Posted June 6, 2006 varbūt negluži par tēmu, bet lielākiem projektiem svarīgi ir nosaukt f-jas pareizi, paredzēt ka vēlāk viņa darīs kaut ko vairāk nekā tagad, atcerēties ka tāda f-ja jau ir un nevajag rakstīt vēlreiz, sadalīt f-jas pa loģiskām grupām. ja ir 10-20 f-jas, tad 'pa lielam' ir vienalga kā un kur viņas inkludo. Link to comment Share on other sites More sharing options...
SkaKri Posted June 6, 2006 Report Share Posted June 6, 2006 Un ja netiek dots - dabūjam fatal error? kapēc. par to lai katrs pats domā. man nav laika rakstīt te galbaldarbu, uz darbu jāiet. Link to comment Share on other sites More sharing options...
Delfins Posted June 6, 2006 Report Share Posted June 6, 2006 SkaKri, nu tu pats rakstījis... if (_POST) then include func.php Tas nav OK..., ja netiek padots _POST Un vispār jāizvairās no savām f-ju gigantiskajām libām... Pietiek ar txt-apstrādes libu... Imho, izmantojam OOP, specifiskus algoritmus saliekam pa plauktiņiem un inkludojam, kad vajag... Link to comment Share on other sites More sharing options...
SkaKri Posted June 6, 2006 Report Share Posted June 6, 2006 (edited) skaidri uzrakstīts (upd: ā, nē, nepierakstīju gan. miega trūkums) - JA tiek izmantots (atceries - piemērs, tikai piemērs!) pie submitēšanas. tas ir tikai varianta sākums. Edited June 6, 2006 by SkaKri Link to comment Share on other sites More sharing options...
john.brown Posted June 6, 2006 Report Share Posted June 6, 2006 Funkciju, kuras vajag visa skriptā, neatkarīgi no darāmā, tiešām, parasti nav daudz. Tās tad arī includo vienmēr sākumā. Un tad sadali to skriptu pa failiem, kuri katrs dara savu specifisku darbiņu, un inklūdo atkarībā no padotajiem parametriem. T.b. pats index fails veic tik includu managment :) Bet optimālāk un jēdzīgāk protams ir darīt kā Delfins teica - OOP ar pārdomātu struktūru. Iekš php5 vēl __autoload() stipri jauka ir. Tad tiešām includojas tik tas, kas ir nepieciešams katrā konkrētajā gadījumā. Link to comment Share on other sites More sharing options...
Recommended Posts