PHP dynamisches Laden von Klassen

Sagen wir, ich habe ein Array, das ich in ein Wertobjekt konvertieren möchte.

Meine Wertobjektklasse lautet wie folgt:

/* file UserVO.php*/
 class UserVO
 {
    public $id;
    public $email;

     public function __construct($data)
     {
         $this->id = (int)$data['id'];
         $this->email = $data['email'];
     } 
 }

Und ich erstelle mein Array von Wertobjekten wie folgt:

/* file UserService.php*/
$array = array(
array(...),
array(...));
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
   $result[] = new UserVO($array[$i]);
}
return $result;

OK, das funktioniert also alles gut. Ich möchte jedoch die VO spezifizieren, die dynamisch erstellt werden soll, damit ich eine einzige dynamische Funktion zum Erstellen meiner VOs haben kann.

Etwas wie

$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;
}

Mir ist klar, dass ich dies mit einer switch-Anweisung (die alle meine VOs durchläuft) tun könnte ... aber es gibt zweifellos eine viel elegantere Lösung. Es wäre auch supercool, wenn ich die VOs nach Bedarf faul laden könnte, anstatt mehrere "Includes" zu haben

Jede Hilfe sehr geschätzt.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage