我有一个很少发生的问题。在一些pc上,和WordPress实例类加载使用作曲家的作品,但在极少数情况下,我不能加载任何类,我得到错误Class not found
。我注意到,当它工作时,它通常是Mac或Windows机器,从Docker容器,本地WP或XAMPP运行。
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
没有任何错误。myplugin.php
文件的一部分,我注册命名空间和加载类看起来像这样:
<?php
namespace VendorMyPlugin;
require_once __DIR__ . '/vendor/autoload.php';
use VendorMyPluginHelperTemplate;
use VendorMyPluginControllerSettings;
use VendorMyPluginEnumeratorsUri as UriEnumerator;
我在后面的代码中使用了这些类,但正如我所说,它在某些Wordpress实例上不能识别类,但它在大约70%的计算机/Wordpress实例上工作。
我很感谢任何建议!
经过一番研究,我找到了解决办法。添加:
"config": {
"optimize-autoloader": true
}
到composer.json
解决了这个问题。