Composer赢得了自动加载

时间:2015-04-03 00:38:38

标签: php composer-php

我有一个新项目,我试图从一开始就与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'),

这件事我想要什么?!

1 个答案:

答案 0 :(得分:4)

使用psr-0时,需要为每个命名空间级别创建一个目录。所以你的目录结构必须是这样的:

/
    lib/
        Openstack/
            Client.php
    composer.json
    test.php

或者,您可以在composer.json

中使用psr-4
{
    "autoload": {
        "psr-4": {
            "Openstack\\": "lib/"
        }
    }
}