"Class not found" 尝试在 wordpress 插件中使用 composer 自动加载时
"Class not found" when trying to use composer auto load in a wordpress plugin
我遇到的问题很少发生。在某些 PC 上,使用 composer 加载 WordPress 实例 class 是可行的,但在极少数情况下我无法加载任何 classes,并且出现错误 Class not found
。我注意到当它工作时,它通常是 Mac 或 Windows 机器,来自 Docker 容器、本地 WP 或 XAMPP.[=18 的 运行 =]
composer.json
看起来像这样:
{
"name": "vendor/my-plugin",
"license": "proprietary",
"description": "Integration of the ...",
"autoload": {
"psr-4": {
"Vendor\MyPlugin\": "src"
}
},
"require": {
"jumbojett/openid-connect-php": "^0.9.5"
}
}
文件夹结构与此相似:
myplugin.php
composer.json
composer.lock
vendor
- ...
src
- controller
- Settings.php
- enumerators
- Message.php
- Uri.php
- helper
- Template.php
- view
...
运行 composer install
没有任何错误。
我正在注册名称空间并加载 class 的 myplugin.php
文件的一部分如下所示:
<?php
namespace Vendor\MyPlugin;
require_once __DIR__ . '/vendor/autoload.php';
use Vendor\MyPlugin\Helper\Template;
use Vendor\MyPlugin\Controller\Settings;
use Vendor\MyPlugin\Enumerators\Uri as UriEnumerator;
我稍后在代码中使用了这些 classes,但正如我所说,它在某些 Wordpress 实例上无法识别 classes,但它可以在 ~70% 上工作计算机/Wordpress 实例数。
感谢任何建议!
经过一番研究,我找到了解决办法。添加:
"config": {
"optimize-autoloader": true
}
至composer.json
解决了问题。
我遇到的问题很少发生。在某些 PC 上,使用 composer 加载 WordPress 实例 class 是可行的,但在极少数情况下我无法加载任何 classes,并且出现错误 Class not found
。我注意到当它工作时,它通常是 Mac 或 Windows 机器,来自 Docker 容器、本地 WP 或 XAMPP.[=18 的 运行 =]
composer.json
看起来像这样:
{
"name": "vendor/my-plugin",
"license": "proprietary",
"description": "Integration of the ...",
"autoload": {
"psr-4": {
"Vendor\MyPlugin\": "src"
}
},
"require": {
"jumbojett/openid-connect-php": "^0.9.5"
}
}
文件夹结构与此相似:
myplugin.php
composer.json
composer.lock
vendor
- ...
src
- controller
- Settings.php
- enumerators
- Message.php
- Uri.php
- helper
- Template.php
- view
...
运行 composer install
没有任何错误。
我正在注册名称空间并加载 class 的 myplugin.php
文件的一部分如下所示:
<?php
namespace Vendor\MyPlugin;
require_once __DIR__ . '/vendor/autoload.php';
use Vendor\MyPlugin\Helper\Template;
use Vendor\MyPlugin\Controller\Settings;
use Vendor\MyPlugin\Enumerators\Uri as UriEnumerator;
我稍后在代码中使用了这些 classes,但正如我所说,它在某些 Wordpress 实例上无法识别 classes,但它可以在 ~70% 上工作计算机/Wordpress 实例数。
感谢任何建议!
经过一番研究,我找到了解决办法。添加:
"config": {
"optimize-autoloader": true
}
至composer.json
解决了问题。