Avi*_*y28 3 php wordpress composer-php
我正在编写一个插件并尝试使用作曲家自动加载我的类,但我无法让它工作。我知道关于这个话题有很多问题,但似乎没有什么对我有用。
目录结构:
插件名称
composer.json文件:
{
"require": {
"katzgrau/klogger": "dev-master"
},
"autoload": {
"psr-4": { "Foo\\": "classes" }
}
}
Run Code Online (Sandbox Code Playgroud)
插件名称.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'));
Run Code Online (Sandbox Code Playgroud)
类名.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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档,这个自动加载应该可以工作,但我仍然得到
未找到类“Foo\Class_Name”
我想这可能与我试图在plugins_loaded钩子中初始化“Class_Name”这一事实有关,但是如果我更早地需要vendor/autoload.php,那为什么会很重要呢?
需要 require autoload.php __DIR__:
从
require 'vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)
到
require __DIR__ . '/vendor/autoload.php';
Run Code Online (Sandbox Code Playgroud)
感谢达米安·贾杜奇(Damian Dziaduch)的回答。
| 归档时间: |
|
| 查看次数: |
2085 次 |
| 最近记录: |