【问题标题】:Where is the correct place to put vendor files in Cakephp 2.X?在 Cakephp 2.X 中放置供应商文件的正确位置在哪里?
【发布时间】:2019-12-16 16:26:39
【问题描述】:

我接管了一个旧的 CakePHP 2.X 网站,之前没有使用 CakePHP 的经验,所以如果这是一个愚蠢的问题,请原谅我。

我正在考虑对一些供应商文件进行一些更改,并注意到我们似乎在 2 个不同的地方有多个不同文件的副本(大部分是相同的):

  • app/webroot/api/vendor/API/lib/
  • 供应商/API/lib/

此外,我注意到在其他各个地方还有其他几个供应商目录。

我正在使用App::import('Vendor', 'example', array('file' => 'API/lib/example.php')); 加载相关脚本。

谁能向我解释一下与供应商文件相关的文件结构的最佳做法是什么?此外,我可以安全地删除所有文件的重复副本吗? CakePHP 如何知道要加载哪个副本?

编辑:

我得出的结论是文件是从vendors/API/lib/ 而不是app/webroot/api/vendor/API/lib/ 加载的,后一个位置的文件是否可能是多余的?我似乎找不到对它们的任何引用。

【问题讨论】:

  • 在 Vendor 文件夹中使用

标签: php cakephp cakephp-2.0 vendor


【解决方案1】:

正如 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 的组件,并且您想将其导入到您在项目中经常使用的控制器中:

组件将位于 控制器 > 组件 > 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 的一种更正确的方法,但我认为两者都是合法的。 我希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多