PHP构造类(变量和命名空间)的问题

时间:2013-02-05 19:09:44

标签: php constructor namespaces

我刚刚遇到以下问题。我正在尝试构建一个类,但它不起作用。当我构建类时,它使用命名空间和变量,因为变量必须放在反斜杠后面(对于命名空间)它会产生错误。 这是定义类的示例代码;

$className = 'Help';
$controller = new \controller\$className;

类名在变量中定义,在上面的示例代码中我只是将其设置为“帮助”。在构造类时,它前面有\controller\,这是因为它在该命名空间中。如果我删除命名空间的东西,它只是;

$controller = new $className;

确实有效。问题可能是因为变量前面有一个反斜杠,它包含要构造的类名。我无法在代码的开头添加use controller;,因为包含类的文件在构造函数中加载,并且在加载文件后立即构造类。我认为use函数只能在文件的开头使用,而不能在方法中使用。

我希望有人可以帮助我。

提前致谢, 蒂姆维斯特

2 个答案:

答案 0 :(得分:3)

您的第一个示例是语法无效。你需要的是:

$className = '\controller\Help';
$controller = new $className();

答案 1 :(得分:3)

将完全限定类名设置为变量,并使用它来实例化新对象:

$className = '\controller\Help';
$controller = new $className;