我刚刚遇到以下问题。我正试图构造一个类,但它不起作用。当我构造类时,它使用名称空间和变量,因为变量必须放在反斜杠后面(对于名称空间),所以会出现错误。下面是定义类的示例代码;
$className = 'Help';
$controller = new 'controller'$className;
类名是在一个变量中定义的,在上面的示例代码中,我刚刚将其设置为"Help"。当构造类时,它前面有'controller'
,这是因为它在那个命名空间中。如果我去掉名称空间的东西,那么它就有;
$controller = new $className;
它确实有效。这个问题可能是因为变量前面有一个反斜杠,其中包含要构造的类名。我无法在代码的开头添加use controller;
,因为包含该类的文件是在构造函数中加载的,并且在加载文件后会立即构造该类。use
函数只能在文件的开头使用,我认为不能在方法内部使用。
我希望有人能帮我,。
提前感谢,Tim Visée
您的第一个示例是无效语法。相反,你需要这样的东西:
$className = ''controller'Help';
$controller = new $className();
将完全限定类名设置为变量,并使用该变量实例化新对象:
$className = ''controller'Help';
$controller = new $className;