你不能。如果您使用 zip 分发插件,至少目前不会。如果您打算仅通过 composer 分发,您可以使用 'static-plugins' 文件夹通过 composer 在您的项目中安装您的插件,这也将安装 deps。
现在,如果您想通过商店商店进行分发,您必须在插件 zip 中提供供应商文件夹。您还必须在插件类中主动包含自动加载器。
以下代码 sn-p 放置在插件类的类声明之上,并加载插件的 composer 自动加载器 - 如果它存在。这意味着您仍然可以通过 composer 分发,也可以通过 zip 文件分发。
if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
$loader = require_once dirname(__DIR__) . '/vendor/autoload.php';
if ($loader !== true) {
spl_autoload_unregister([$loader, 'loadClass']);
$loader->register(false);
}
}
示例/来源:https://github.com/runelaenen/shopware6-two-factor-auth/blob/master/src/RuneLaenenTwoFactorAuth.php
在打包您的 zip 时,不要忘记包含供应商文件夹,然后您就可以分发您的插件了。
请记住,您不能在一个系统中两次使用一个包,类名必须是唯一的。因此,只包括您肯定不会被核心 Shopware 或其他软件包使用的软件包(及其依赖项)。或者使用 PHP Scoper 之类的工具来确定插件供应商文件夹的范围,这样所有内容始终是唯一的,即使它已经在系统中使用。
路线图
Shopware 在roadmap 上集成了作曲家,因此这可能很快就会过时。然而,在撰写本文时(2021 年 2 月),上述方法是可行的方法。