gpt4 book ai didi

PHP 命名空间错误

转载 作者:行者123 更新时间:2023-12-04 16:58:00 25 4
gpt4 key购买 nike

我有一个应该可以工作的 PHP API 库的问题。我正在使用 codeigniter 框架。

我正在尝试使用我的 eve_market_model 中的 PHPEVECentral 库。如您所见,该库由多个使用命名空间的文件组成。为了使用这个库,我只包含了主文件 PHPEVECentral.php。

在这里,您可以找到树状文件夹的屏幕截图。

http://s21.postimg.org/byz3udi8n/arbo.png

namespace PHPEveCentral;

class PHPEveCentral
{
...

public function MarketStat($typeid = array())
{
return new \PHPEveCentral\Requests\MarketStat($typeid);
}
}

因此,当我调用 PHPEveCentral->MarketStat() 函数时,出现 php 错误:
Class 'PHPEveCentral\Requests\MarketStat' not found in C:\wamp\www\Eve-board\application\libraries\PHPEveCentral\PHPEveCentral.php on line 68

当我包含 PHPEveCentral\Requests\MarketStat.php 文件时,不再有此错误,但是我有另一个文件的其他错误,所以我也必须包含它等等。

我是否必须手动包含库的每个文件?我希望有另一种方式,因为它有点无聊。

谢谢你的帮助。

编辑

我扩展了 CodeIgniter Loader 类,添加了一个方法来递归地包含文件夹的所有文件。 https://github.com/zallek/CodeIgniter/blob/master/MY_Loader.php

使用这种方法,我没有收到任何错误,这很有效。唯一的问题是优化问题:

Load->file() 只是像 PHP vanilla 那样包含文件,而 Load->class() 设计为仅实例化一次类(单例)。但是我不能使用 Load->class() 因为有一些接口(interface)不能使用这个方法。所以也许,我应该找到一种方法来检测它是类文件还是接口(interface)文件......

最佳答案

您要设置的是所谓的自动加载。如果您正确命名文件,它将根据需要正确加载它们。

它有一个名为 PSR-0 的标准,您可以在 https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md 上阅读该标准。

您还有一个示例实现。

关于PHP 命名空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18099898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com