尝试为WordPress插件使用作曲家自动加载时"Class not found"



我正在编写一个插件,并尝试使用作曲家自动加载我的类,但是我无法使其正常工作。我知道这个话题有很多问题,但似乎对我无济于事。

目录结构:

  • 插件名称

      • 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 FooClass_Name;
require 'vendor/autoload.php';
class Plugin_Name_Bootstrap{
    public static function run() {
        Class_Name::instance();
    }
 }
add_action('plugins_loaded', array('Plugins_MainPlugin_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;
    }
}

根据文档,该自动加载应该有效,但我仍然得到

class'foo class_name'找不到

我以为这可能与我试图在plugins_loaded挂钩中初始化" class_name"的事实有关,但是如果我需要供应商/autoLoad.php,那为什么很重要?

需要使用 __DIR__的autoLoad.php:

来自

require 'vendor/autoload.php';

to

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

感谢Damian Dziaduch的答案。

相关内容

  • 没有找到相关文章

最新更新