«Класс не найден» при попытке использовать автозагрузку композитора для плагина WordPress - PullRequest
0 голосов
/ 04 марта 2019

Я пишу плагин и пытаюсь использовать composer для автоматической загрузки моих классов, но я не могу заставить его работать.Я знаю, что есть много вопросов по этой теме, но мне кажется, что ничего не работает.

структура каталогов:

  • имя плагина

    • classes
      • Class_Name.php
    • vendor
    • plugin-name.php
    • composer.json
    • composer.lock

composer.json файл:

{
    "require": {
        "katzgrau/klogger": "dev-master"
    },
    "autoload": {
        "psr-4": { "Foo\\": "classes" }
    }
}

plugin-name.php file:

namespace Plugins_Main;

use Foo\Class_Name;

require 'vendor/autoload.php';

class Plugin_Name_Bootstrap{
    public static function run() {
        Class_Name::instance();
    }
 }
add_action('plugins_loaded', array('Plugins_Main\Plugin_Name_Bootstrap', 'run'));

Class_Name.php file:

namespace Foo;

class Class_Name{
    protected static $_instance = null;

    public static function instance(){
        if ( self::$_instance === null ) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }
}

Согласно документации эта автозагрузка должна работать, но я все еще получаю

Класс 'Foo \ Class_Name' не найден

Я подумал, может быть, это как-то связано с тем, что я пытаюсь инициализировать "Class_Name" в перехватчике plugins_loaded, но почему это так важно?если мне потребуется vendor / autoload.php гораздо раньше?

1 Ответ

0 голосов
/ 04 марта 2019

Требуется файл autoload.php с __DIR__:

от

require 'vendor/autoload.php';

до

require __DIR__  . '/vendor/autoload.php';

Спасибо Дамиан Дзиадуч заответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...