【问题标题】:Autoload Vendor with CakePHP v3.x and Composer使用 CakePHP v3.x 和 Composer 自动加载供应商
【发布时间】:2015-08-20 05:37:03
【问题描述】:

我正在尝试将 this 加载到我的 CakePHP 3.x 应用程序中。我完全不知道如何与作曲家一起做这件事。我已经在 composer 中包含了其他文件,但是这个包装器似乎不支持它。

那么,我该怎么做:

  • 使用 Composer 执行此操作
  • 在 3.x 中手动加载 Vendor

自 2.x 以来,这一切都明显改变了 :(

请指点一下?

【问题讨论】:

标签: php cakephp composer-php cakephp-3.0


【解决方案1】:

答案就在我的眼皮底下,on the cake docs

手动需要包装器:

define('VENDOR', ROOT . DS . 'vendor' . DS);
require(VENDOR . 'thoughtco' . DS . 'freeagent' . DS . 'Freeagent.php');

然后修改包装器以使用命名空间:

namespace Freeagent;

然后在我的组件中实例化它。

use Freeagent\Freeagent;
...
public function __construct()
    {
        $this->client = new Freeagent('id', 'key');
    }

工作完成了——也许其他人会觉得它有用:)

【讨论】:

  • 修改 3rd 方库通常是一个相当糟糕的主意,除非您决定自己维护它们。首选应该是自定义作曲家存储库。
  • 即便如此,lib 没有使用命名空间,没有它我无法在 3.x 中使用它。我不必有信心在 GitHub 等上提出更改建议 - 仍然觉得我总是错的 - 哈 :)
  • 它不需要使用命名空间就可以在 CakePHP 3.x 中使用(只是不要忘记target the global namespace)。如果这是一个要求,那么您将不能再使用任何位于 gobal 命名空间中的内置 PHP 类。
  • N00b 错误——我对命名空间了解不够——我只能通过添加它来让它工作。不用试一下。
猜你喜欢
  • 2015-11-20
  • 1970-01-01
  • 2019-03-16
  • 2015-03-30
  • 2014-10-11
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2017-02-22
相关资源
最近更新 更多