permet de dire que j'ai une matrice que je veux convertir en un objet de valeur.
Ma classe d'objet de valeur est la suivante: p>
$ret = create_vo($array, 'UserVO');
function create_vo($data, $vo)
{
$count = count($data);
for ($i = 0; $i < $count; $i++)
{
$result[] = new $vo($data[$i]); //this obviously wont work...Class name must be a valid object or a string
}
return $result;
}
4 Réponses :
function __autoload($className)
{
require_once 'myclasses/'.$className.'.php';
}
Premièrement, la conversion des données vers un objet de tableau pour UserVo doit être effectuée avec ArrayObject
SO P>
$rc = new ReflectionClass($vo); $rc->newInstanceArgs($data[$i]);
Ceci fonctionne
<?
class UserVO
{
public $id;
public $email;
public function loadData($data)
{
$this->id = (int)$data['id'];
$this->email = $data['email'];
}
}
function create_vo($data, $vo)
{
$count = count($data);
for ($i = 0; $i < $count; $i++)
{
$tmpObject = new $vo;
$tmpObject->loadData($data[$i]);
$result[] = $tmpObject;
unset($tmpObject);
}
return $result;
}
$data = array();
$data[] = array('id'=>1,'email'=>'data@example.com');
$data[] = array('id'=>2,'email'=>'data@example.com');
$data[] = array('id'=>3,'email'=>'data@example.com');
$data[] = array('id'=>4,'email'=>'data@example.com');
$data[] = array('id'=>5,'email'=>'data@example.com');
$data[] = array('id'=>6,'email'=>'data@example.com');
$result = create_vo($data,'UserVO');
var_dump($result);
?>
Il semble que include_once () ' s et require_once () la performance est plutôt mauvaise . p>
Ma suggestion: p>
Tuez tous "exiger_once" et "incluse_once" et créez un autochargeur. Enregistrez ce implémentation p>
Votre chargeur automatique utilise toujours inclus ou besoin qu'il ne charge pas tout de suite que lorsqu'il est nécessaire de sorte que votre argument n'est pas le plus valable. Comme l'utilisation de l'autochargeur est plus de charge.