3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先將類名放入變量中:
$classname=$var.'Class';
$bar=new $classname("xyz");
這通常是您將以Factory模式包裝的東西。

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果您使用命名空間
在我自己的發(fā)現(xiàn)中,我認(rèn)為最好提及您(據(jù)我所知)必須聲明類的完整名稱空間路徑。
MyClass.php
namespace com\company\lib;
class MyClass {
}
index.php
namespace com\company\lib;
//Works fine
$i = new MyClass();
$cname = 'MyClass';
//Errors
//$i = new $cname;
//Works fine
$cname = "com\\company\\lib\\".$cname;
$i = new $cname;

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
如何也傳遞動(dòng)態(tài)構(gòu)造函數(shù)參數(shù)
如果要將動(dòng)態(tài)構(gòu)造函數(shù)參數(shù)傳遞給該類,則可以使用以下代碼:
$reflectionClass = new ReflectionClass($className);
$module = $reflectionClass->newInstanceArgs($arrayOfConstructorParameters);
有關(guān)動(dòng)態(tài)類和參數(shù)的更多信息
PHP> = 5.6
從PHP 5.6開始,您可以使用Argument Unpacking進(jìn)一步簡(jiǎn)化此操作:
// The "..." is part of the language and indicates an argument array to unpack.
$module = new $className(...$arrayOfConstructorParameters);
感謝DisgruntledGoat指出這一點(diǎn)。
- 3 回答
- 0 關(guān)注
- 1262 瀏覽
添加回答
舉報(bào)