我已经接管了一个旧的CakePHP 2.X网站,并且之前没有使用CakePHP的经验,所以如果这是一个愚蠢的问题,请原谅我。
我正在考虑对一些供应商文件进行一些更改,并注意到我们似乎在 2 个不同的地方拥有各种文件的多个副本(在大多数情况下是相同的(:
- app/webroot/api/vendor/API/lib/
- 供应商/API/库/
此外,我注意到在其他地方还有其他几个供应商目录。
我正在使用App::import('Vendor', 'example', array('file' => 'API/lib/example.php'));
来加载有问题的脚本。
有人可以向我解释一下与供应商文件相关的文件结构的最佳实践是什么?此外,删除所有文件的重复副本是否安全?CakePHP 如何知道要加载哪个副本?
编辑:
我得出的结论是文件是从vendors/API/lib/
而不是app/webroot/api/vendor/API/lib/
加载的,后一个位置的文件是否有可能是冗余的?我似乎找不到任何对它们的引用。
正如Sudhir评论的那样,您的应用程序项目中有一个文件夹称为供应商。我建议你把它放在那里。 应用>供应商
例如,我创建了一个名为 Csv 的文件夹,用于通过启动它们的 Shell 生成我自己的 csv 文件。它位于应用程序>供应商> csv
为了将其导入我的项目,我做了下一个能够使用它:
<?php
include('GenericShell.php');
require_once(ROOT . DS . 'app' . DS . 'Vendor' . DS . 'Csv' . DS .
'CsvGenerator.php');
class CsvPatientsShell extends GenericShell {
这是PHP的唯一一个例子。
另一个是,如果在这种情况下,您有一个称为组件的组件.php并且您想将其导入到项目中经常使用的控制器中:
组件将位于 控制器>组件>名称组件.php
接下来要做的是在控制器中同样执行导入: 假设控制器的名称是 NameController.php位于控制器文件夹中。 控制器>名称控制器.php
public function main_function() {
App::import('Component', 'Namecomponent');
$NameComponent = new NameComponent();
$this->layout = null;
$this->autoLayout = false;
die();
}
这将是使用CakePhp执行此操作的更正确的方法,但我想说两者都是合法的。 我希望这会以某种方式帮助你。