我正在尝试使用命名空间更新我的项目 在使用命名空间之前,我可以通过如下变量轻松调用类:
<?php
$className = "Item";
$myClass = new $className();
?>
现在,当使用名称空间(use
)时,我希望这可以工作:
(不是总是工作:'找不到课堂'或者像这样的人?)
<?php
namespace myProject
use myProject\Models
$className = "Item";
$myClass = new $className(); // this class has the namespace myProject\Models
// this doesn't work! (can't find class)
$myClass = new Models\$className();
// nope, doesn't work either
$myClass = new myProject\Models\$className();
// nope
?>
但直接调用同一个类 - 没有变量 - 正在工作
$myClass = new Item();
我必须做的事情,使其成功:
<?php
namespace myProject;
use myProject\Models; // unnessecary now
$className = "\\" . __NAMESPACE__ . "\\Models\\" . "Item";
$myClass = new $className();
?>
我现在的问题是:
如果我想通过变量调用类,我是否真的必须将整个命名空间包含为完全限定名称?
修改:
我在这里找到了答案:
Dynamic namespaced class with alias
无论如何我会保留这个问题,因为我找不到正确的答案。