尝试对wordpress插件使用composer自动加载时出现“找不到类”

时间:2019-03-04 09:29:27

标签: php wordpress composer-php

我正在编写一个插件,并尝试使用composer自动加载我的课程,但是我无法使其正常工作。我知道有关此主题的问题很多,但似乎对我没有任何帮助。

目录结构:

  • 插件名称

      • Class_Name.php
    • 供应商
    • plugin-name.php
    • composer.json
    • composer.lock

composer.json 文件:

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

plugin-name.php 文件:

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 文件:

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'

我认为这可能与我试图在plugins_loaded挂钩中初始化“ Class_Name”有关,但是如果我更早地要求vendor / autoload.php为什么会很重要?

1 个答案:

答案 0 :(得分:0)

需要带有__DIR__的autoload.php:

来自

require 'vendor/autoload.php';

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

感谢Damian Dziaduch的答案。