0

我试图弄清楚命名空间在 PHP 中是如何工作的,但还没有真正幸运

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

代码

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

增值税代码.php

namespace resource;

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

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

资源.php

namespace resource;

class Resource {

}

错误

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

1 回答 1

3

这只是名称空间的问题。您的类增值税代码位于命名空间资源中。如果,在您使用的 VatCode 声明文件中,nameofclas::...它将new nameofclass()尝试获取命名空间资源中的类。如果您想在文档中使用类 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

于 2012-11-10T19:52:45.063 回答