Lynx Posted May 21, 2006 Report Share Posted May 21, 2006 Kādu laiku izstrādāju pie dinamiskas lapas ar templeitiem un valodas mainīšanas sistēmu un iešāvās prātā iespējams uzlabojums, lai padarītu visu vienkāršāku un atbrīvotos no lieki includotiem valodas failiem. Ir funkcija error($text, $back = FALSE) kurai tiek padoti 2 mainīgie, viens ar kļūdas aprakstu, otrs ar ceļu kur atgriezties atpakaļ. Ir iespējams padot funckijai mainīgo $l_error tā lai viņš izpildītos tikai pēc tam funkcijā, nevis uzreiz tiktu izpildīts un tad padots. triviālā veidā izskatītos kopā šādi: include('functions.php'); blabla kods notiek kluuda ar tekstu 12, kods tiek apstadinats un izvadam kludas pazinojumu { error($l_error12); } iekš functions.php error($text, $back = FALSE) { include('languages/blaabla'); Te notiek visa tā mainīgo izpildīšana, mēs redzam ka $text ir padots kā mainīgais $l_error12. Atrodam šo mainīgo valodas failā un izvadam $text vietā $l_error12 saturu no valodas faila. Es meiģināju dažādi padot referenci &$, bet nevarēju palaist. Ir tas vispār iespējams? echo $text; } Kāda jēga no šī visa? Pagaidām ir tā, ka katrā lapā ir jainklūdo erroru.php valodas fails, pat ja kļūdas nenotiek. Ja dabūtu gatavu šādu variantu tad atbrīvotos lapa no vairākiem mainīgajiem ar daudz tekstu. Link to comment Share on other sites More sharing options...
bubu Posted May 21, 2006 Report Share Posted May 21, 2006 Nesapratu. Ko tieši tu negribi izpildīt uzreiz, bet gan vēlāk? Link to comment Share on other sites More sharing options...
Lynx Posted May 21, 2006 Author Report Share Posted May 21, 2006 Mainīgo $l_error12, kurš tiek padots funkcijai error(); Jo pirms funkcijas izsaukšanas $l_error12 nav definēts, visus erorus ir plānots nodefinēt tikai iekšā funkcijā, kurā tiek izsaukts vajadzīgais valodas fails. Link to comment Share on other sites More sharing options...
bubu Posted May 21, 2006 Report Share Posted May 21, 2006 A kāpēc tu negribi prosta ar masīvu, kurā sarakstīit tie teksti, darīties? error("FILE_NOT_FOUND"); un tad tajā valodu failā uzdefinēt to: $messages = array("FILE_NOT_FOUND" => "Fails nav atrasts", "XXX"=>"blah blah", ...); Link to comment Share on other sites More sharing options...
Lynx Posted May 21, 2006 Author Report Share Posted May 21, 2006 Teorētiski varētu, vienkārši vēlos pieturēties visā projektā pie vienotas sistēmas. Lapas augša tiek includoti valodu faili. Un vienkārši attīstot projektu uz priekšu radās ideja uztaisīt lapu tā, ka nav nekas lieks, piemēram, tagad visus error tekstus parnest uz atsevisku failu, kurš tiktu izsaukts, tikai kad nepieciešams. Nevis kā tagad visi viņi ir iekš common.php, kur glabaajas arī pārējie biežāk lietotie. Sanāk katru reizi laižot skriptu nēsāt līdzi kaudzi ar liekiem mainīgiem. Ātrumu jau tas praktiski neietekmē, bet kā pedantam gribās, lai viss būtu kārtībā :) Hmm sanāk, ka tas nav iespējams? Izpētīju php.net manuāļus un neko līdzīgu neatradu. Iespējams, vienkārši es nezinu kā šo sauc. Link to comment Share on other sites More sharing options...
bubu Posted May 21, 2006 Report Share Posted May 21, 2006 Es vienk nespēju iedomāties, kā var izpildīt mainīgo, kurš nav definēts, vēlāk.. Ja jau nav definēts, ko vēl var iesākt? Link to comment Share on other sites More sharing options...
Lynx Posted May 21, 2006 Author Report Share Posted May 21, 2006 Ja tu tā pasaki, tad patiešām sāku saprast loģikas kļūdu. Nu teorētiski var jau nepadot tieši mainīgo, bet pēc nosaukuma padošanas mainīgo radīt(un tieši te es iesprūstu): izsaucam ar: error('l_error12'); function error($code) { include('valodas fails'); echo ${$code}; // ši rinda, protams, nestradaa, bet doma aptuveni skaidra. Izpildīt mainīgo, pēc tam kad mainīgais ir izveidots. } Kaut gan izskatās, ka šī mana mirkļa ideja aiziet dziļās auzās, un pietiks niekoties. Palieku pie vecās sistēmas. Link to comment Share on other sites More sharing options...
john.brown Posted May 21, 2006 Report Share Posted May 21, 2006 (edited) Mainīgo, kurš nav definēts, vēlāk izpildīt gan nevar - viņa tak pēc būtības nav. Bet lai includotu kļūdu tekstus tik tad, kad kļūdas reāli ir bijušas, var darīt tā. Kļūdu tekstu failā saraksti tos tekstus masīvā ar kādiem kodiem kā atslēgām. Kad notiek kļūda, izsauc to error funkciju, inklūdo tekstu failu, un pēc koda izņem no masīva tekstu. Tipa: if(! kaut kas,kas var dot kļūdu) { print_error('001'); } function print_error($code) { include('errors_lv.php'); echo $errors[$code]; } Lai apstrādātu vienu reizi visas kļūdas, var uztaisīt kādu masīvu, kur tos kodus liec iekšā, un beigās pārbaudīt, vai tur kas ir. Ja ir, tad izsaukt to print_error($errors), iziet to masīvu ar kodiem un izvadīt visas kļūdas Un kāpēc nestrādā. Man it kā strādā print_error('err'); function print_error($code) { $err = 'Mana kluda'; echo ${$code}; } p.s. php5 Edited May 21, 2006 by john.brown Link to comment Share on other sites More sharing options...
bubu Posted May 21, 2006 Report Share Posted May 21, 2006 echo $$code; Link to comment Share on other sites More sharing options...
Lynx Posted May 21, 2006 Author Report Share Posted May 21, 2006 Heh un tagad patiešām strādā. Izskatās, ka vienkārši 1o reizi rakstot kļūdijos mainīgos neuzrakstot vienādi. Un tā kā biju pieradis pie tā, ka nestrādā eksperimenti, pieļāvu, ka te arī vienkārši nebija tā paredzēts strādāt. Paldies visiem kuri palīdzēja tikt līdz gala risinājumam. Link to comment Share on other sites More sharing options...
Recommended Posts