实例化变量类名,如果在传统的直接包含文件的方式,并不会存在什么问题,
<?php
class Test
{
public function __construct()
{
echo 333;
}
}
$cls_name = 'Test';
$a = new $cls_name;
代码完全是可以正常运行的.
如果使用PHP命名空间做自动加载,两个类在同一个命名空间底下,实例化变量类名__需要包含完整的命名空间__.
假设Test类与当前类在同一个命名空间底下.
$cls_name = 'Test';
//$obj = new $cls_name; //错误,无法找到该类.
$cls_name = "\app\controller\\".$cls_name; //最后一个`\`,使用转义`\\`
$obj = new $cls_name;