0

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

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

类名是在一个变量中定义的,在上面的示例代码中,我刚刚将其设置为“Help”。在构造它\controller\前面的类时,这是因为它在那个命名空间中。如果我删除命名空间的东西,那么它就有了;

$controller = new $className;

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

我希望有人可以帮助我,。

在此先感谢蒂姆·维塞

4

2 回答 2

3

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

$className = '\controller\Help';
$controller = new $className;
于 2013-02-05T19:12:02.040 回答
3

你的第一个例子是无效的语法。您将需要类似的东西:

$className = '\controller\Help';
$controller = new $className();
于 2013-02-05T19:11:45.947 回答