Návratový typ funkce

Nezahrávejte si s návratovými hodnotami a vracejte je dobře.

V php může funkce jednou vrátit string, podruhé zase array. Nikdo ji nenutí k žádné poslušnosti. Datová volnost ale není vždy zárukou krácení kódu. Chci říct, že někdy to pěkne nakrkne. Pro příklad si vezmu třeba metodu pro vracení výsledků SQL dotazu.

$table = new Foo;
$result = $table->fetchAll();

Pokud jsou v tabulce Foo záznamy, tak fetchAll vrátí pole záznamů. Pokud neobsahuje ani jeden záznam, tak se vrátí NULL. A teď jak to komplikuje situaci? No hodně, nejčastější krok po výběru z databáze je procházení záznamů.

$table = new Foo;
$results = $table->fetchAll();
foreach($results as $result){
 echo $result->id;
}

Pokud bude $results NULL, tak nám script pěkně havaruje a to přece strašně chceme. Takže začneme problém řešit.

Jako první by se dalo použít

$table = new Foo;
$results = $table->fetchAll();

if(!is_array($results)){
 die();
}

foreach($results as $result){
 echo $result->id;
}

Strašně elegantní že? Asi nejlepší řešení které mě napadlo je přetypovat návratovou hodnotu.

$table = new Foo;
$results = (array)$table->fetchAll();

foreach($results as $result){
 echo $result->id;
}

Ale pořád je psaní navíc. Proto pokud funkce která vrací pole by měla pole vracet i za špatného počasí. Takže pokud navrhujete funkci, mějte na paměti tento problém.

Autorem tohoto článku je Petr Čada.


<Starší | tento článek | Novější>

Napsáno: 14. 3. 2008, 15:33 | Přečteno: 29567x | Kategorie: PHP School | Napsal: error414 |
Kamarád mě teďka povídal jaké existuje hanácké hodnocení kvality vína :) 1. Dá sa 2. Dá sa svařit 3. Nedá sa 4. Dá sa pražákovi
Petr Graubner | ICQ- 264912843, Jabber - pecan27@njs.netlab.cz | RSS | Šlape na miniRS | Styl CoolStyle | Zpracováno za: 0.184s | Počet SQL dotazů ve fóru: 1 | Admin