Carga de clase dinámica PHP
Digamos que tengo una matriz que quiero convertir en un objeto de valor.
Mi clase de objeto de valor es la siguiente:
/* file UserVO.php*/
class UserVO
{
public $id;
public $email;
public function __construct($data)
{
$this->id = (int)$data['id'];
$this->email = $data['email'];
}
}
Y creo mi matriz de objetos de valor de la siguiente manera:
/* file UserService.php*/
$array = array(
array(...),
array(...));
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
$result[] = new UserVO($array[$i]);
}
return $result;
OK, entonces todo esto funciona bien. Sin embargo, me gustaría especificar específicamente el VO que se creará dinámicamente, de modo que pueda tener una única función dinámica para crear mis VO.
Algo como:
$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;
}
Me doy cuenta de que podría hacer esto con una declaración de cambio (iterando a través de todos mis VO) ... pero sin duda hay una solución mucho más elegante. También sería genial si pudiera cargar lentamente los VO según sea necesario, en lugar de tener múltiples 'incluye'
Cualquier ayuda muy apreciada.