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