实例化变量类名,如果在传统的直接包含文件的方式,并不会存在什么问题,

<?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;