slitz Posted February 8, 2007 Report Share Posted February 8, 2007 Vai iekš PHP ier tāda lieta kā GOTO,JMP? Nu ka viņš aizlec uz norādītu vietu, rindiņu skriptā? Link to comment Share on other sites More sharing options...
bubu Posted February 8, 2007 Report Share Posted February 8, 2007 Nav. Un labi vien ir, ka nav. Link to comment Share on other sites More sharing options...
john.brown Posted February 8, 2007 Report Share Posted February 8, 2007 Kaut ko līdzīgu var realizēt caur do{...}while. Apmēram šitā: do{ if(kaut kāds nosacijums) break; // te daram to, kas tiek izlaists pie nosacijuma }while(0); // te daram to kas jadara vienmeer Link to comment Share on other sites More sharing options...
bubu Posted February 9, 2007 Report Share Posted February 9, 2007 Ar ko tas ir labāks par: if ( ! kaut kāds nosacijums) { // te daram to, kas tiek izlaists pie nosacijuma } // te daram to kas jadara vienmeer ? Link to comment Share on other sites More sharing options...
john.brown Posted February 9, 2007 Report Share Posted February 9, 2007 Ar to, ka var būt zināms vairums dažādu nosacījumu, kurus sabāzt iekš viena if, vai iekš if{}else sanāk ne visai loģiski/glīti. Bet jebkurā gadījumā koda gabals ir jāizlaiž. Tad arī šāda konstrukcija ir ļoti ērta. Link to comment Share on other sites More sharing options...
bubu Posted February 9, 2007 Report Share Posted February 9, 2007 Nesaprotu, kur ir problēma: if (nosacījums1 || nosacījums2 || nosacījums3) { //... } Un vispār, ja vienā nosacījumā jāliek desmit dažādas pārbaudes, tad ir jāpadomā vai koda struktūra nav aizbraukusi auzās. Link to comment Share on other sites More sharing options...
KillerBean Posted February 9, 2007 Report Share Posted February 9, 2007 manupraat kkaa offtopics aizgaajis :D par to goto.. ja nav biezhi jaalieto, tad var izdaliit kodu aaraa, citaa failaa... un ar if(tiri piri...) {include('fails.php');}; ielikt kaut vai 3x peec kaartas Link to comment Share on other sites More sharing options...
andrisp Posted February 9, 2007 Report Share Posted February 9, 2007 KillerBean, un tavs posts nav offtopiks ? :) Link to comment Share on other sites More sharing options...
john.brown Posted February 9, 2007 Report Share Posted February 9, 2007 (edited) bubu, es ko tādu domāju $args = array(); do{ if(!$reques->get('do')) { $view = new myInputFormView(); break; } if($errors = $validator->validate($request)) { $view = new myInputFormView(); $args['errors'] = $errors; $args['request'] = $request; break; } $dataItem = new myDataItem(); $dataItem->fill($request); if($errors = $dataItem->save()) { $view = new myErrorView(); $args['errors'] = $errors; break; } $view = new mySuccessView(); }while(0); $view->render($args); Edited February 9, 2007 by john.brown Link to comment Share on other sites More sharing options...
bubu Posted February 9, 2007 Report Share Posted February 9, 2007 Tie nav normāli nosacījumi. Normāli cilvēki if nosacījumā salīdzina, nevis piešķirt. Šādi tu tikai kodu padari grūti saprotamu un neviegli izsekojamu. Šajā vieta imho labāk derētu exceptioni - tad nevajadzētu funkcijām rezultāta vietā atgriezt failošanas flagu. Tb - ja kautkas nesanāk - izmetam exceptionu un miers. Lai to ķer tajā vietā, kurā vajadzīgs ķert. Nevajag garus spagetti if kodus rakstīt (ja jau programmējam OOP). Link to comment Share on other sites More sharing options...
john.brown Posted February 9, 2007 Report Share Posted February 9, 2007 (edited) Ja php5, tad jau var arī exception`us. Es gan neteiktu, ka tas sanāk daudz saprotamāk, bez tam, uzreiz nāk klāt darbiņš sacerēt normālas exceptionu klasītes - lai iekš šamām kāda sakarīga informācija būtu. Nu, bet tas jau gaumes jautājums :) Normāli cilvēki if nosacījumā salīdzina Nu neteiktu gan. If nosacījums pārbauda, vai tas, kas šamā uzrakstīts ir taisnība (true) vai meli (false). Piemēram if($variable) {} ir pilnīgi korekti, kaut es neko nesalīdzinu :) Un lasās mani nosacījumi gamdrīz normālā cilvēku valodā - ja ir kļūda saglabājot itemu, tad... Kas tur grūti lasāms? Nu nekādi neteikšu, ka šitas ir saprotamāks: $args = array(); if(!$reques->get('do')) { $view = new myInputFormView(); } else { try { $validator->validate($request); $dataItem = new myDataItem(); $dataItem->fill($request); $dataItem->save(); $view = new mySuccessView(); } catch(ValidateExcepton $e) { $errors = $e->getErrors(); $view = new myInputFormView(); $args['errors'] = $errors; $args['request'] = $request; } catch(DataItemException $e) { $errors = $e->getErrors(); $view = new myErrorView(); $args['errors'] = $errors; } } $view->render($args); Bez tam, divas exceptionu klases jārakst. Un validatora gadījumā tā nebūt nav triviāla :) Edited February 9, 2007 by john.brown Link to comment Share on other sites More sharing options...
v3rb0 Posted February 9, 2007 Report Share Posted February 9, 2007 (edited) šādi jau tie paši ifi vien tik ir, vai kļūdu, ka nav aizpildīs obligāts lauks mest exceptionā nezinu. imho exceptionos jāķer nestandarta kļūdas.. kāds spēlejies ar id, kaut kādu failu vairs nevar atrast, nevar pie db piekonektēties etc. Edited February 9, 2007 by v3rb0 Link to comment Share on other sites More sharing options...
Recommended Posts