名称空间和类扩展

时间:2012-11-10 19:43:47

标签: php class namespaces

我试图弄清楚命名空间如何在PHP中运行,但并不是真的很幸运

希望有人能告诉我这里我做错了什么:)

require_once 'Vatcode.php';
$Vatcode = new \resource\Vatcode();

Vatcode.php

namespace resource;

require_once Ini::get('path/class').'/Resource.php';

class Vatcode extends Resource {
    public function __construct(){
        echo 'works!';
    }
}

Rescource.php

namespace resource;

class Resource {

}

错误

Fatal error:  Class 'resource\Ini' not found in Vatcode.php

1 个答案:

答案 0 :(得分:3)

这只是命名空间的问题。 您的班级Vatcode在名称资源中。如果在VatCode声明文件中使用nameofclas::...new nameofclass(),它将尝试在名称空间ressource中获取该类。 如果您想在文档中使用Ini类,您有两个解决方案:

首先提供完整的合格名称:

require \namespace\of\ini\Ini::get('path/class').'/Resource.php';

在使用get方法之前使用“use”keyworld:

use \namespace\of\ini\Ini;
require_once Ini::get('path/class').'/Resource.php';

在任何情况下,如果Ini处于“无命名空间”(全局命名空间是准确的单词),您只需使用我给您的解决方案,但只能使用\Ini代替\namespace\of\ini\Ini