PHP expert |
|
Ik ben bezig met een dataobject class.
Een heel uitgebreide waarbij alles eigenlijk automatisch gegenereert wordt.
Ik heb enkel 1 klein (raar) probleempje.
Misschien kan een van jullie dit verklaren.
Ik maak de class recursief zodat er ook query's kunnen ingevoerd worden zonder WHERE statement. Het probleem is dat ik daarvoor dan een array wil maken van de class zelf binnen de class en dit lukt niet zo goed.
Het aanmaken lukt perfect. Als ik vlak na het aanmaken een DUMP gooi van het net aangemaakte object lukt het perfect. Maar als ik dan een DUMP van de array vraag dan zegt hij dat de array NULL is (dus niet bestaat). Terwijl hij vlak ervoor wel een element hiervan laat zien.
<?php
var_dump($this->$tabel[$data[$this->key]]);
echo "<br />";
var_dump($this->$tabel);
echo "<br />";
var_dump($this->$tabel[$data[$this->key]]);
echo "<br />";
var_dump($this->$tabel);
echo "<br />";
?>
<?php var_dump($this->$tabel[$data[$this->key]]); var_dump($this->$tabel[$data[$this->key]]); ?>
output:
object(dataobject)#2 (6) { ["data"]=> array(2) { ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } ["tabel"]=> string(4) "test" ["key"]=> string(2) "id" ["een"]=> bool(true) ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" }
NULL
object(dataobject)#2 (6) { ["data"]=> array(2) { ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } ["tabel"]=> string(4) "test" ["key"]=> string(2) "id" ["een"]=> bool(true) ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" }
NULL
object(dataobject)#2 (6) { ["data"]=> array(2) { ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } ["tabel"]=> string(4) "test" ["key"]=> string(2) "id" ["een"]=> bool(true) ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } NULL object(dataobject)#2 (6) { ["data"]=> array(2) { ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } ["tabel"]=> string(4) "test" ["key"]=> string(2) "id" ["een"]=> bool(true) ["foo"]=> string(3) "bar" ["id"]=> string(1) "1" } NULL
Heel gek dus.
Even wat meer code:
<?php
function dataobject($tabel, $where = NULL) {
$this->tabel = $tabel;
$this->key = $this->getprimarykey();
//bovenstaande werkt zeker dus daar zit de fout niet
if(count($where) == 0) {
$result = mysql_query("SELECT * FROM ". $tabel);
while($data = mysql_fetch_assoc($result) ) {
$this->$tabel[$data[$this->key]] = new dataobject($tabel, $this->key ." = ". $data[$this->key]);
var_dump($this->$tabel[$data[$this->key]]);
echo "<br />";
var_dump($this->$tabel);
echo "<br />";
var_dump($this->$tabel[$data[$this->key]]);
echo "<br />";
var_dump($this->$tabel);
echo "<br />";
}
$this->een = false;
} else {
//irrelevant
}
}
?>
<?php function dataobject($tabel, $where = NULL) { $this->tabel = $tabel; $this->key = $this->getprimarykey(); //bovenstaande werkt zeker dus daar zit de fout niet $this->$tabel[$data[$this->key]] = new dataobject($tabel, $this->key ." = ". $data[$this->key]); var_dump($this->$tabel[$data[$this->key]]); var_dump($this->$tabel[$data[$this->key]]); } $this->een = false; } else { //irrelevant } } ?>
Hopelijk heeft iemand een idee wat ik verkeerd doe, want ik snap echt niet hoe zoiets kan. Ik roep een element van de array aan: geen probleem. Ik roep de array aan => array bestaat niet...
|