Hier haal ik in mijn controller wat data op via mijn model:
<?php
$model = new Frontend_Model_Cursusitems();
$result = $model->getFirstItem($id)->toArray();
?>
Deze kan dan via de functie toArray() erachter te zetten van een standaard Zend object omgezet worden naar een array.
Ja dat snap ik maar hoe word de data die voor ->toArray() meegestuurd zodat deze verwerkt word?
Normaal stuur je de parameters namelijk mee doormiddel van ->toArray($data) maar hier word de data voor de toArray gebruikt.
[size=xsmall]Toevoeging op 05/02/2013 17:03:54:[/size]
Ja Kris dat plus het gene dat ik in mijn vorige post heb aangegeven.
Rick, zie de code waar ik naar linkte:
<?php
public function toArray()
{
$return = array();
foreach ($this as $row) {
if (is_array($row)) {
$return[] = $row;
} elseif (method_exists($row, 'toArray')) {
$return[] = $row->toArray();
} elseif ($row instanceof ArrayObject) {
$return[] = $row->getArrayCopy();
} else {
throw new Exception\RuntimeException(
'Rows as part of this DataSource, with type ' . gettype($row) . ' cannot be cast to an array'
);
}
}
return $return;
}
?>
Ze loopen dus over $this. Dat kan omdat $this Iterator implement, google daar maar eens op voor meer informatie over Iterators in PHP: Een van de geweldige PHP features!
Ik ben in de dingen rond gaan kijken die je mij hebt gegeven maar kom er nog niet uit hoe Zend ervoor zorgt dat de functie ->toArray() op elk object beschikbaar is.
Als ik namelijk fluent wil werken zal ik <?php return $this; ?> moeten gebruik om de class mee terug te sturen. Alleen als ik iets uit de database ophaal dan return ik een object <?php return $result; ?> en dan kan ik dus niet meer return $this; gebruik om de class me terug te sturen.
Hoe kan ik er dan dus toch nog voor zorgen dat ik ->toArray() kan gebruiken zonder de class zelf mee terug te sturen maar het object dat ik om wil zetten in een array.
Zoals ik hierboven ook aal aangaf
<?php
$model = new Frontend_Model_Cursusitems();
$result = $model->getFirstItem($id)->toArray();
?>
Daar krijg ik een data uit mijn database in de vorm van een object.
Deze data wil ik kan om kunnen zetten naar een array doormiddel van er ->toArray(); achter te zetten.