PHP bir değişken bir sınıf örneğini?

2 Cevap php

Bu soru oldukça belirsiz sesler biliyorum o yüzden bir örnekle daha net hale getirecek:

$var = 'bar';
$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');

Bu benim yapmak istediğim budur. Bunu nasıl yapardın? Ben ders dışı Bu gibi () eval kullanabilirsiniz:

$var = 'bar';
eval('$bar = new '.$var.'Class(\'var for __construct()\');');

Ama ben oldukça uzakta eval () uzak kalmak istiyorum. Eval () olmadan bunu yapmak için herhangi bir yolu var mı?

2 Cevap

Önce bir değişken classname koyun:

$classname=$var.'Class';

$bar=new $classname("xyz");

Bu genellikle bir fabrika desen sarılmış görürsünüz türden bir şey olduğunu.

How to pass dynamic constructor parameters too

Eğer sınıfa dinamik yapıcı parametreleri geçirmek istiyorsanız, bu kodu kullanabilirsiniz:

$reflectionClass = new ReflectionClass($className);

$module = $reflectionClass->newInstanceArgs($arrayOfConstructorParameters);

More information on dynamic classes and parameters