Cakephp 3.0 在Cakephp 3.x中,从使用composer安装的插件中删除[Username]的最佳实践是什么?

Cakephp 3.0 在Cakephp 3.x中,从使用composer安装的插件中删除[Username]的最佳实践是什么?,cakephp-3.0,Cakephp 3.0,使用composer安装插件时,默认情况下,它会将其放入ROOT/vendor/[username]/[plugin name]。这也会使用如下内容更新ROOT/vendor/cakephp-plugins.php return [ 'plugins' => [ '[UserName]/[PluginName]' => $baseDir . '/vendor/[username]/[plugin-name]/' ] ]; 这显然也使得你的插件的名称空

使用composer安装插件时,默认情况下,它会将其放入ROOT/vendor/[username]/[plugin name]。这也会使用如下内容更新ROOT/vendor/cakephp-plugins.php

return [
    'plugins' => [
        '[UserName]/[PluginName]' => $baseDir . '/vendor/[username]/[plugin-name]/'
    ]
];
这显然也使得你的插件的名称空间应该是这样的

namespace [Username]\[PluginName]\Controller;
当你做一个重定向(作为一个例子)时,你会用类似于

$this->redirect(['plugin' => '[Username]/[PluginName]', 'controller' => '[Controller]', 'action' => 'index']);

当您引用使用composer安装的插件时,删除[Username]的最佳实践是什么

最佳做法是从插件的composer.json文件中的autoload参数中删除用户名

看起来是这样的:

"autoload": {
    "psr-4": {
        "Username\\PluginName\\": "src"
    }
},
应该是这样的

"autoload": {
    "psr-4": {
        "PluginName\\": "src"
    }
},

最好的做法是不要摆弄它。为什么要这样做呢?如果你最终得到了你不喜欢的URL,那么解决方法就是使用路由将你喜欢的URL映射到插件。@GregSchmidt它与URL无关@ndm如果你不想在每个你想调用插件的地方都使用你的用户名,你可能会这么做。例如
使用UserName\PluginName\Model\Table,当它可以是较短的
时,使用PluginName\Model\Table。请注意,如果执行此操作,将导致命名空间冲突。使用大多数现代IDE中的自动完成功能,在
use
语句中包含用户名实际上不需要更多的输入。您可能还需要手动移动使用composer安装新插件时创建的所有文件夹,我不知道这会对更新过程产生什么影响。不,不需要。文件vendor/cakephp-plugins.php会处理这个问题,并在使用composer安装时自动创建/更新。