我刚刚遇到以下问题。我正在尝试构建一个类,但它不起作用。当我构建类时,它使用命名空间和变量,因为变量必须放在反斜杠后面(对于命名空间)它会产生错误。 这是定义类的示例代码;
$className = 'Help';
$controller = new \controller\$className;
类名在变量中定义,在上面的示例代码中我只是将其设置为“帮助”。在构造类时,它前面有\controller\
,这是因为它在该命名空间中。如果我删除命名空间的东西,它只是;
$controller = new $className;
确实有效。问题可能是因为变量前面有一个反斜杠,它包含要构造的类名。我无法在代码的开头添加use controller;
,因为包含类的文件在构造函数中加载,并且在加载文件后立即构造类。我认为use
函数只能在文件的开头使用,而不能在方法中使用。
我希望有人可以帮助我。
提前致谢, 蒂姆维斯特
答案 0 :(得分:3)
您的第一个示例是语法无效。你需要的是:
$className = '\controller\Help';
$controller = new $className();
答案 1 :(得分:3)
将完全限定类名设置为变量,并使用它来实例化新对象:
$className = '\controller\Help';
$controller = new $className;