"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解决了问题。