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