A történet ott kezdődik, hogy vannak nekem nagyon szép osztályaim és osztályhalmazaim - nagyképűen hívhatom őket libeknek is, amelyekkel kiegészítem a Zend Framework képességeit. Ezek főleg a felületi elemek elkészítésére vonatkoznak. Idővel elkészült egy grid. Ez egy táblázat, amelyben táblázatos formában jelennek meg az adatok. Az adatra lehet szűrni oszloponként.
Az egyik alkalmazásom vége felé járok és teszteltem. Észrevettem, hogy a gridet nem úgy műkökdnek, ahogy azt én szeretném. Nem lehet szűrni... Ilyenkor jön a debug és keresem a hibát.
Az igazán bosszantó az volt, hogy kiderült, hogy az egyik változó nem rendelkezik értékkel. A var_dump szerint üres. Megnéztem a konstruktorban is var_dumppal ezt a változót ott meg volt értéke. Itt kezdtem el felvonni az egyik szemöldökömet. Kellemes 20 perc után rájöttem, hogy mi a gond.
Itt a példa:
-
-
class SpecialClass {
-
-
private $_variable;
-
-
public function __construct() {
-
-
$this->_variable = array(
-
'asd' => 'asd_value',
-
'bsd' => 'bsd_value');
-
-
}
-
-
private function generate() {
-
//code
-
foreach($variable2 as $var2) {
-
foreach($this->_variable as $var) {
-
//code
-
//var_dump($var)
-
}
-
}
-
//code
-
}
-
}
-
A lényeg, hogy a legbelső foreach - ben nem volt értéket a $var változónak. Megnéztem a var_dump($this->_variable) is, de annak sem volt értéket. Vajon mitől lehet az, hogy az a változó, aminek az értékét megadom a konstruktorban egyszer csak elveszik?
A megoldás: A legelső foreach üres tömböt kapott. Az alkalmazásom esetében az egy tömb, amit a Zend_Db_Adapter_Abstract osztály fetchAll() metódusa ad vissza. Ez üres volt. Pontosabban a futtatott SQL utasításnak nem volt eredménye. Miután javítottam a lekérdezést minden rendben működött.






