以下所有示例均基于所有文件都存在于正确位置的保证。我已经三倍检查了这一点。
(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();
因此,在使用变量实例化类时,似乎忽略了命名空间声明。
有没有更好的方法(比我的上一个示例),所以我不需要通过一些代码并更改每个变量以包含命名空间?