PHPで変数からクラスをインスタンス化しますか? 質問する

PHPで変数からクラスをインスタンス化しますか? 質問する

この質問はかなり漠然と聞こえると思うので、例を挙げてより明確に説明します。

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

これが私がやりたいことです。あなたならどうしますか? もちろん、次のように eval() を使うこともできます:

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

しかし、私は eval() は避けたいと思っています。eval() なしでこれを行う方法はありますか?

ベストアンサー1

まずクラス名を変数に入れます:

$classname=$var.'Class';

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

これは、Factory パターンでよく見られる種類のものです。

見る名前空間と動的言語機能詳細についてはこちらをご覧ください。

おすすめ記事