php - 命名空间和类扩展

标签 php class namespaces

我试图弄清楚命名空间在 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

最佳答案

这只是命名空间的问题。
您的类增值税代码位于 namespace 资源中。如果在增值税代码声明文件中使用 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

关于php - 命名空间和类扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325454/

相关文章:

php - 迁移到 Postgresql

php - Paypal 自适应预先批准付款

c++ - 这段代码的输出是什么,它在构造函数中使用了 strcpy?

PHP 解析错误(意外的 T_IF)

c++ - 为什么我们不能在一个类中声明一个命名空间?

c++ - C++中的命名空间重构

php - 解析错误 : syntax error, 意外 '->' (T_OBJECT_OPERATOR)

c++ - 如何使用运算符<<打印类对象

c# - 从 Canvas 继承

php - file_get_contents 不输出 svg