相关疑难解决方法(0)

将名称空间与通过变量创建的类一起使用

所以我创建了这两个类

//Quarter.php
namespace Resources;
class Quarter {
    ...
}


//Epoch.php
namespace Resources;
class Epoch {

    public static function initFromType($value, $type) {
        $class = "Quarter";
        return new $class($value, $type);
    }    
}
Run Code Online (Sandbox Code Playgroud)

现在这是两者的简化版本,但足以说明我的问题。此处显示的类将无法使用,因为找不到四分之一类。为了使其工作,我可以将$ class变量更改为

$class = "\Resources\Quarter";
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:当两个类已经是同一个命名空间的成员时,为什么需要在这里使用命名空间。仅当我将类名放入变量中时,才需要名称空间:

    public static function initFromType($value, $type) {
        return new Quarter($value, $type);
    }    
Run Code Online (Sandbox Code Playgroud)

可以正常工作。为什么会这样?在这里有什么需要避免的潜在陷阱吗?

php namespaces

4
推荐指数
1
解决办法
1004
查看次数

标签 统计

namespaces ×1

php ×1