gpt4 book ai didi

php - Yii 自动加载命名空间

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

全部,

已经提出了类似的问题,但我似乎无法弄清楚这一点。我有一个运行的 ConsoleCommand,我想命名文件。结构如下:
/protected/commands/Ingestion/ (根,包含 IngestionCommand.php )。/protected/commands/Ingestion/ingestionServices/ (包含此命令所依赖的服务)。

奇怪的是,当我没有将“命名空间摄取”放在我的 IngestionCommand 的顶部,而是将所有其他命名空间的东西放在一边时,一切都运行良好。我只想把这个类放到命名空间 Ingestion 中,但是 php 抛出了这个错误:

PHP Fatal error:  Cannot redeclare class Ingestion\IngestionCommand in /mnt/hgfs/linkFolder/devro/CFXJobTrack/monoMassPrintTemplate/protected/commands/Ingestion/IngestionCommand.php on line 166
PHP Error[2]: include(/mnt/hgfs/linkFolder/devro/CFXJobTrack/monoMassPrintTemplate/protected/config/../commands/Ingestion/Iterator.php): failed to open stream: No such file or directory...

我也不知道 Iterator.php 失败是关于什么文件的......
我已经使用 NetBeans 和 Finder(在 Mac 上)来搜索此类的其他实例,但我没有。这是我的 .conf 的一部分:
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR . '..',
'name'=>'Cron',
'preload'=>array('log'),
'aliases'=> array(
'Ingestion' => dirname(__FILE__) . '/../commands/Ingestion/',
),
//autoload class for use in yii.
'import'=>array(
'application.components.*',
'application.models.*',
'application.extensions.sftp.*',
'application.components.container.*',
'application.commands.*',
'Ingestion.*',
'Ingestion.ingestionServices.*',

),
'commandMap'=> array(
'ingestion' =>array(
'class' =>'Ingestion.IngestionCommand',
),

当我注释掉这一行时:
'Ingestion' => dirname(__FILE__) . '/../commands/Ingestion/',
php 提示如下:
PHP Error[2]: include(IngestionCommand.php): failed to open stream: No such file or directory
in file /mnt/hgfs/linkFolder/devro/CFXJobTrack/yii/framework/YiiBase.php at line 421...

这告诉我我试图加载这个类的唯一地方就在那里,但我可能错了。有谁知道我错过了什么/做错了什么?

我不明白为什么我不能命名这个类,但我可以命名子目录类。

如果我遗漏了一些重要信息,请告诉我。以防万一,这是我正在运行的初始化文件:
// change the following paths if necessary
$yii=dirname(__FILE__).'/../../../yii/framework/yii.php';
$config=dirname(__FILE__).'/../config/cron.php';


// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

require_once($yii);
require_once(dirname(__FILE__).'/../components/ConsoleApplication.php');
Yii::createApplication('ConsoleApplication',$config)->run();

所有文件都遵循与类相同的命名约定。

我已经经历过这个以及其他一些 SO 问题和 Yii 文件:
Yii Framework Namespace Docs

谢谢。

最佳答案

通过将摄取 'class' 参数更改为 '\Ingestion\IngestionCommand' 来解决。 (在命令映射下)。

关于php - Yii 自动加载命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483063/

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