我是作曲者的新手,可以管理自定义类的加载。我正在尝试向自动加载中添加一些自定义类,但没有成功,我将总是遇到Class not found...
错误。
我将如何正确设置作曲器,在哪里将composer.json
文件与有关自定义类的psr-4信息一起放置?
有人可以帮助我了解在这种情况下它将如何工作吗?
这是我的课程代码段,我使用了一些作曲家程序包,因此需要自动加载它们。该文件放置在其自己的目录中。结构如下:project_root\assets\library\MyClassFolder
<?php
namespace MyNamespace;
require_once __DIR__.'/vendor/autoload.php';
use \Foo\Bar;
class MyClass {
...
}
?>
这是需要加载类的代码。此文件位于我的项目根文件夹内,并导致错误:
<?php
require_once __DIR__.'/vendor/autoload.php';
use \MyNamespace\MyClass;
if( isset($_POST['do_action']) ){
MyClass::init();
}
?>
这是项目根目录中的composer.json文件:
{
"require": {
"gabordemooij/redbean": "^5.3"
},
"autoload": {
"psr-4": {
"MyNamespace\\": "assets/library/"
}
}
}
答案 0 :(得分:0)
我找到了一个修复程序,在composer.json
文件中犯了一个错误。我没有将名称空间指向classes目录。这就是为什么我遇到Class not found...
错误。
编辑器文件现在看起来像这样:
{
"require": {
"gabordemooij/redbean": "^5.3"
},
"autoload": {
"psr-4": {
"MyNamespace\\": "assets/library/MyClassFolder/"
}
}
}
我还需要更改自定义类文件中的require_once
,以指向自动加载文件所在的供应商路径。
代替
require_once __DIR__.'/vendor/autoload.php'
现在我已经
require_once dirname(__DIR__, 3).'/vendor/autoload.php'
这是因为