Composer自动加载

Jam*_*ery 10 php psr-0 composer-php

我目前正在尝试使用PSR-0自动加载Composer,但是我收到以下错误:

Fatal error: Class 'Twitter\Twitter' not found
Run Code Online (Sandbox Code Playgroud)

我的目录结构如下所示

- Project
    - src
        - Twitter
            Twitter.php
    - vendor
    - Test
    index.php
Run Code Online (Sandbox Code Playgroud)

我的index.php文件如下所示:

<?php

    use Twitter;
    $twitter = new Twitter();
Run Code Online (Sandbox Code Playgroud)

我的Twitter.php文件看起来像这样

<?php 

namespace Twitter;

class Twitter
{
    public function __construct()
    {
        // Code Here
    }
}
Run Code Online (Sandbox Code Playgroud)

最后我的composer.json看起来像这样:

{
"require": {
    "phpunit/phpunit": "3.8.*@dev",
    "guzzle/guzzle": "3.7.*@dev"
},
"minimum-stability": "dev",
"autoload": {
    "psr-0": {
        "Twitter" : "src/Twitter"
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我有点困惑.我来自C#背景,这种工作方式让我感到困惑.使用PSR-0自动加载的正确方法是什么?

Gia*_*ini 11

在你的composer.json中使用:

"autoload": {
    "psr-0": {
        "": "src/"
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

"autoload": {
    "psr-0": {
        "Twitter\\": "src/"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后跑 php composer.phar dump-autoload


dev*_*ler 3

使用

"psr-0": {
     "Twitter" : "src/"
 }
Run Code Online (Sandbox Code Playgroud)

这指示作曲家创建自动加载器,它将查找名称空间src中的所有内容Twitter。因为它是PSR-0,命名空间被视为一个文件夹并添加到声明的路径中,所以你不应该将它包含在路径部分中composer.json

  • 至于文档,肯定有 - http://getcomposer.org/doc/04-schema.md#autoload (2认同)