我可以在 cakephp 上加载带有别名的插件吗?


Can I load a Plugin at cakephp with an alias?

假设我在 CakePHP 2.x 中安装了一个名为 GmponosCakePlugin 的插件。此插件将位于文件夹名称为 GmponosCakePlugin 的插件文件夹下。

要加载插件,我需要执行以下操作CakePlugin::load('GmponosCakePlugin');

然后,如果我需要使用此插件中的帮助程序,则必须在我的 AppController 中使用以下语法GmponosCakePlugin.MyHelper才能加载帮助程序。

有什么方法可以将此插件别名作为Gmponos,以便我可以将其加载为Gmponos.MyHelper

如果您无法重命名文件夹,那么答案不一定是否定的,但由于 CakePHP 中没有明确的插件名称别名功能,因此您拥有的所有选项或多或少都是"黑客"。

例如,

一种选择是使用所需的名称注册一个额外的假插件,以及指向实际插件文件夹的自定义路径,例如

CakePlugin::load('Gmponos', array (
    'path' => APP . 'Plugin' . DS . 'GmponosCakePlugin' . DS
));

这应该有效(虽然不确定可能的副作用(,但它有点丑陋。并且应该注意的是,在大多数情况下,注册普通插件名称需要额外执行此操作,因为在插件中,代码将引用实际的插件名称。

如果它是您自己的插件,并且它使用的是作曲家,那么通过installer-name额外选项更改安装文件夹名称应该很容易,这是我更喜欢的解决方案。

https://github.com/composer/installers#custom-install-names

当然,您还必须在插件代码本身中更改可能的插件名称引用。