我有一个新项目,我从一开始就试图与Composer站在一起,[我是一个很晚才采用的人],但自动加载将不起作用,我不知道为什么,这让我抓狂。
这就是目前项目的实际情况:[不包括/vender/]
/
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 OpenstackClient();
试图运行test.php给了我:
PHP Fatal error: Class 'OpenstackClient' not found
尽管:
# grep -r Openstack vendor/composer/
vendor/composer/autoload_namespaces.php: 'Openstack' => array($baseDir . '/lib'),
这东西想让我怎么样?!
当您使用psr-0时,您需要为每个命名空间级别都有一个目录。所以你的目录结构应该是这样的:
/
lib/
Openstack/
Client.php
composer.json
test.php
或者,您可以在composer.json
中使用psr-4。
{
"autoload": {
"psr-4": {
"Openstack\": "lib/"
}
}
}