第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從PHP中的變量實(shí)例化一個(gè)類?

從PHP中的變量實(shí)例化一個(gè)類?

PHP
慕碼人8056858 2019-11-11 14:10:46
我知道這個(gè)問題聽起來(lái)很模糊,因此我將通過一個(gè)示例來(lái)使其更加清楚:$var = 'bar';$bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()');這就是我要做的。你會(huì)怎么做?我當(dāng)然可以這樣使用eval():$var = 'bar';eval('$bar = new '.$var.'Class(\'var for __construct()\');');但是我寧愿遠(yuǎn)離eval()。沒有eval(),有沒有辦法做到這一點(diǎn)?
查看完整描述

3 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先將類名放入變量中:


$classname=$var.'Class';


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

這通常是您將以Factory模式包裝的東西。

查看完整回答
反對(duì) 回復(fù) 2019-11-11
?
森林海

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;


查看完整回答
反對(duì) 回復(fù) 2019-11-11
?
互換的青春

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)。


查看完整回答
反對(duì) 回復(fù) 2019-11-11
  • 3 回答
  • 0 關(guān)注
  • 1262 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)