我有一个新项目,我试图从一开始就与Composer站在一起,[我是一个很晚的采用者]但是自动加载将无法正常工作,我不能找出原因,这让我疯狂。
这就是现在的项目:[不包括/ vendor /]
/
lib/
Client.php
composer.json
test.php
composer.json
{
"autoload": {
"psr-0": {
"Openstack\\": "lib/"
}
}
}
LIB / Client.php
<?php
namespace Openstack;
class Client {
public function __construct() {
echo "hello world";
}
}
test.php的
<?php
require('vendor/autoload.php');
$foo = new Openstack\Client();
尝试运行test.php给了我:
PHP Fatal error: Class 'Openstack\Client' not found
即使:
# grep -r Openstack vendor/composer/
vendor/composer/autoload_namespaces.php: 'Openstack' => array($baseDir . '/lib'),
这件事我想要什么?!
答案 0 :(得分:4)
使用psr-0时,需要为每个命名空间级别创建一个目录。所以你的目录结构必须是这样的:
/
lib/
Openstack/
Client.php
composer.json
test.php
或者,您可以在composer.json
。
{
"autoload": {
"psr-4": {
"Openstack\\": "lib/"
}
}
}