在 Cakephp 2.X 中放置供应商文件的正确位置在哪里?
Where is the correct place to put vendor files in Cakephp 2.X?
我已经接管了一个旧的 CakePHP 2.X 网站并且之前没有使用 CakePHP 的经验所以如果这是一个愚蠢的问题请原谅我。
我正在考虑对一些供应商文件进行一些更改,并注意到我们似乎在 2 个不同的地方有各种文件的多个副本(在大多数情况下,它们是相同的):
- app/webroot/api/vendor/API/lib/
- vendors/API/lib/
此外,我注意到在其他地方还有其他几个供应商目录。
我正在使用 App::import('Vendor', 'example', array('file' => 'API/lib/example.php'));
加载有问题的脚本。
有人可以向我解释一下与供应商文件相关的文件结构的最佳做法是什么吗?此外,删除所有文件的副本是否安全? CakePHP 如何知道要加载哪个副本?
编辑:
我得出的结论是文件是从 vendors/API/lib/
而不是 app/webroot/api/vendor/API/lib/
加载的,后一个位置的文件是否可能是多余的?我似乎找不到对它们的任何引用。
正如 Sudhir 对您的评论,您的应用项目中有一个名为 Vendor 的文件夹。我建议你把它放在那里。
应用 > 供应商
例如,我创建了一个名为 Csv 的文件夹,用于通过启动它们的 Shell 生成我自己的 csv 文件。它位于 app > Vendor > Csv
为了将它导入我的项目,我做了下一步以便能够使用它:
<?php
include('GenericShell.php');
require_once(ROOT . DS . 'app' . DS . 'Vendor' . DS . 'Csv' . DS .
'CsvGenerator.php');
class CsvPatientsShell extends GenericShell {
这是 PHP 的唯一示例。
另一个是,如果在这种情况下您有一个名为 component.php 的组件,并且您想将其导入到您在项目中经常使用的控制器中:
组件将位于
控制器 > 组件 > 名称component.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 执行此操作的更正确方法,但我认为提到的两者都是合法的。
希望对你有所帮助。
我已经接管了一个旧的 CakePHP 2.X 网站并且之前没有使用 CakePHP 的经验所以如果这是一个愚蠢的问题请原谅我。
我正在考虑对一些供应商文件进行一些更改,并注意到我们似乎在 2 个不同的地方有各种文件的多个副本(在大多数情况下,它们是相同的):
- app/webroot/api/vendor/API/lib/
- vendors/API/lib/
此外,我注意到在其他地方还有其他几个供应商目录。
我正在使用 App::import('Vendor', 'example', array('file' => 'API/lib/example.php'));
加载有问题的脚本。
有人可以向我解释一下与供应商文件相关的文件结构的最佳做法是什么吗?此外,删除所有文件的副本是否安全? CakePHP 如何知道要加载哪个副本?
编辑:
我得出的结论是文件是从 vendors/API/lib/
而不是 app/webroot/api/vendor/API/lib/
加载的,后一个位置的文件是否可能是多余的?我似乎找不到对它们的任何引用。
正如 Sudhir 对您的评论,您的应用项目中有一个名为 Vendor 的文件夹。我建议你把它放在那里。 应用 > 供应商
例如,我创建了一个名为 Csv 的文件夹,用于通过启动它们的 Shell 生成我自己的 csv 文件。它位于 app > Vendor > Csv
为了将它导入我的项目,我做了下一步以便能够使用它:
<?php
include('GenericShell.php');
require_once(ROOT . DS . 'app' . DS . 'Vendor' . DS . 'Csv' . DS .
'CsvGenerator.php');
class CsvPatientsShell extends GenericShell {
这是 PHP 的唯一示例。
另一个是,如果在这种情况下您有一个名为 component.php 的组件,并且您想将其导入到您在项目中经常使用的控制器中:
组件将位于 控制器 > 组件 > 名称component.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 执行此操作的更正确方法,但我认为提到的两者都是合法的。 希望对你有所帮助。