以下のすべての例は、すべてのファイルが正しい場所に存在するという保証に基づいています。私はこれを三重にチェックしました。
(1) これは、名前空間を使用しない場合に機能します。
$a = "ClassName";
$b = new $a();
これは機能しません:
// 'class not found' error, even though file is there
namespace path\to\here;
$a = "ClassName";
$b = new $a();
これは機能します:
namespace path\to\here;
$a = "path\to\here\ClassName";
$b = new $a();
したがって、変数を使用してクラスをインスタンス化する場合、名前空間宣言は無視されるようです。
いくつかのコードを調べて、すべての変数を名前空間を含めるように変更する必要がないように、(私の最後の例よりも) 良い方法はありますか?