从命名空间

时间:2015-12-19 00:06:27

标签: php namespaces

我正在尝试使用命名空间更新我的项目 在使用命名空间之前,我可以通过如下变量轻松调用类:

<?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
无论如何我会保留这个问题,因为我找不到正确的答案。

0 个答案:

没有答案