在名称中使用带变量的名称空间

时间:2017-02-26 17:16:47

标签: php oop namespaces

我正在做一些事情,只是练习而我没有那么多经验。我正在使用命名空间,我在“App \ Core”下的类命名空间中有一个函数,它应该包含另一个具有不同类和命名空间的文件在“App \ Diff”下并返回该新类。 即。

namespace App\Core;

class Test {
    public function testFunc($file) {
        require_once "../folder/" . $file . ".php";
        return new $file();
    }
}

现在在$ file中的类

namespace App\Diff;

class Test2 {
}

我尝试了类似返回

的内容
new App\Diff . "\{$file()}";

但是我收到错误“Class App \ Code \ App \ Diff not found ...”

1 个答案:

答案 0 :(得分:2)

正如frz3993提到的那样,首先你进入全球空间,而不是你可以访问\App\Diff和你的班级。见manual
第二个问题我没有正确的解决方案,但你可以看到 csga5000 link&的最后答案。 manual

namespace App\Core;

class Test {
    public function testFunc($file) {
        require_once "../folder/" . $file . ".php";
         $f = "\\App\\Diff\\".$file ;
         return new $f;
    }
}