无法将供应商类导入 CakePHP 2.5.1 中的组件

Posted

技术标签:

【中文标题】无法将供应商类导入 CakePHP 2.5.1 中的组件【英文标题】:Can't import Vendor class into Component in CakePHP 2.5.1 【发布时间】:2015-07-27 19:25:13 【问题描述】:

我一直在查看该主题的所有相关问题,但所提供的解决方案(通常是 App::import() )都没有为我工作,可能是因为我有不同的配置, 如下:

我有一个常规的蛋糕安装,它从 外部文件夹 加载组件(所以在这个安装之外)。即使对于我现在尝试使用的组件,它也很有效(在我尝试加载 Vendor 类之前它工作正常)。这个 Vendor 类我也想把它放在 Cake 安装之外(与组件相同)。这是这个安装的样子:

[] .......[shared_resources] .............................[CakePHP] ..................................................... ......[组件] ..................................................... .............................MyCustomComponent.php ..................................................... ......[供应商] ..................................................... .....[我的供应商] ..................................................... .....................MyVendor.php ......[我的网站] ................... [cakephp 典型文件夹结构]

在我网站的 bootstrap.php 文件中,我有 App::build(array('Controller/Component' => array(dirname(ROOT) . '/shared_resources/CakePHP/Component/'))); 为了能够在任何控制器中加载该组件,它工作正常,我放在该文件夹中的任何组件都可以加载并正常工作。

现在,我正在尝试在 MyCustom 组件中加载 MyVendor 类,但无论我如何尝试我都无法让它工作尝试实例化时出现class not found错误。

我尝试过使用 php 和 Cake 的 require()import()App::import() App::uses() 与所有可能的路径组合(绝对和相对)没有任何成功,将它们放在组件类的声明之前和实际使用供应商类的方法中。例如,我尝试的最后一个是App::import('Vendor', '/absolute/path/to/shared_resources/Vendor/MyVendor/MyVendor.php');

我也尝试过在引导文件,就像组件一样。

我不知道还能尝试什么,任何帮助将不胜感激!!!

哦,我已经用 PHP 检查了文件 Vendor 类文件也存在于该路径中。

【问题讨论】:

【参考方案1】:

根据您的文件夹结构,

要访问你的 MyVendor.php,你应该这样写

App::import('Vendor', 'MyVendor', array('file' => 'MyVendor/MyVendor.php'));

欲了解更多信息,请阅读http://book.cakephp.org/2.0/en/core-utility-libraries/app.html

【讨论】:

以上是关于无法将供应商类导入 CakePHP 2.5.1 中的组件的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 类自定义导入

如何在 CakePHP 3x 中导入供应商文件

Cakephp MiddleWare 类中如何导入自定义组件?

CakePHP 3.5:通过Composer安装后无法访问插件类

CakePHP将数据导入到没有模型的表中

在 CakePHP 中使用控制器之外的组件