作曲家赢得';t自动加载


Composer won't autoload

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

这东西想让我怎么样?!

当您使用psr-0时,您需要为每个命名空间级别都有一个目录。所以你的目录结构应该是这样的:

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

或者,您可以在composer.json中使用psr-4。

{
    "autoload": {
        "psr-4": {
            "Openstack''": "lib/"
        }
    }
}