我正在编写一个插件,并尝试使用作曲家自动加载我的类,但是我无法使其正常工作。我知道这个话题有很多问题,但似乎对我无济于事。
目录结构:
-
插件名称
- 课
- 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的答案。