在 CakePHP 2.0 中加载供应商文件

2022-08-30 13:25:09

我目前正在将我们的一个项目升级到CakePHP 2.0。不幸的是,代码的“第一行”会带来问题,我找不到这个问题的解决方案。

在CakePHP 1.3中,我在定义类之前有一个语句。引用的文件位于 (并包括该文件本身) 下。App::import("Vendor", "facebook");AppController/app/vendors/facebook/facebook.phpbase_facebook.php

我尝试了许多不同的方法,根据此处描述的文件命名和类加载,将文件包含在CakePHP 2.0中:CakePHP 2.0中的文件命名和类加载更改

我将路径重命名为 、 或 ,并尝试了以下方法:app/Vendor/Facebook/Facebook.phpapp/Vendor/Facebook/facebook.php

App::uses("Facebook", "Vendor/Facebook");
App::uses("Facebook", "Facebook");
App::uses("Facebook", "Vendor/Facebook/Facebook.php");
App::uses("Facebook", "Vendor");

有没有人找到一种方法来引用供应商文件?由于延迟加载,上面的方法不会触发错误/警告,因此调试这个有点烦人...


答案 1

供应商不能在CakePHP中使用加载,这是因为CakePHP不能期望外部库遵循有关文件夹和文件命名的相同标准。您仍然可以像在框架的 1.3 版中那样使用。App::uses()App::import('Vendor', ...)

现在,如果您考虑一下,使用供应商有点愚蠢。它只是一个昂贵,冗长且非常愚蠢的包装器。App::import()require_once()

在 2.0 中,我们实际上鼓励人们在其供应商库中使用需求或require_once。您可以使用 或 仅使用 获取供应商文件夹的位置。App::path('Vendor')APP . 'Vendor' . DS


答案 2

蛋糕文档建议使用 App::uses() 包括-files-with-app-import

但是,它还说明了您是否有一个非 stanard 插件来使用 App::Import()

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

推荐