Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 作曲家自动加载_Php_Composer Php_Psr 0 - Fatal编程技术网

Php 作曲家自动加载

Php 作曲家自动加载,php,composer-php,psr-0,Php,Composer Php,Psr 0,我目前正在尝试使用PSR-0自动加载Composer,但出现以下错误: Fatal error: Class 'Twitter\Twitter' not found 我的目录结构如下所示 - Project - src - Twitter Twitter.php - vendor - Test index.php <?php namespace Twitter; class Twitter { pub

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

Fatal error: Class 'Twitter\Twitter' not found
我的目录结构如下所示

- Project
    - src
        - Twitter
            Twitter.php
    - vendor
    - Test
    index.php
<?php 

namespace Twitter;

class Twitter
{
    public function __construct()
    {
        // Code Here
    }
}
我的index.php文件如下所示:

<?php

    use Twitter;
    $twitter = new Twitter();
{
"require": {
    "phpunit/phpunit": "3.8.*@dev",
    "guzzle/guzzle": "3.7.*@dev"
},
"minimum-stability": "dev",
"autoload": {
    "psr-0": {
        "Twitter" : "src/Twitter"
    }
}
}
我有点糊涂了。我来自C#背景,这种工作方式让我有点困惑。使用PSR-0自动加载的正确方法是什么?

使用

"psr-0": {
     "Twitter" : "src/"
 }

这将指示composer创建autoloader,它将在
src
中查找
Twitter
命名空间中的所有内容。由于名称空间是
PSR-0
,因此名称空间被视为一个文件夹并添加到声明的路径中,因此您不应将其包含在composer.json中的路径部分。在composer.json中使用:

"autoload": {
    "psr-0": {
        "": "src/"
    }
}


然后运行
php composer.phar dump autoload

在您的index.php中有一个错误,应该是:

使用Twitter\Twitter;
$twitter=newtwitter();

$twitter=newtwitter\twitter();

首先

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

<?php

    use Twitter;
    $twitter = new Twitter();
{
"require": {
    "phpunit/phpunit": "3.8.*@dev",
    "guzzle/guzzle": "3.7.*@dev"
},
"minimum-stability": "dev",
"autoload": {
    "psr-0": {
        "Twitter" : "src/Twitter"
    }
}
}
如果是您的index.php,那么您忘记首先包含编写器的自动加载脚本

require __DIR__ . '/vendor/autoload.php';

有关详细信息,请参阅。

这是一个非常晚的答复,但您需要做的第一件事是让您的PHP版本为5.6或更高版本。

“因此您不应该包含it composer.json”这是什么意思?遗漏了几个字,您不应该将其包含在路径部分,我仍然会遇到相同的错误。网上有没有任何信息可以解释如何做到这一点?我的其他文件设置正确吗?我忘了添加。。。需要“vendor/autoload.php”;至于文档,当然有-您还必须包含autoloader.php文件-但是,如果其他所有内容都在composer.json文件中定义,那么这可能是您使用require/include显式加载的唯一内容。有关如何使用它的更多详细信息,请参阅Composer常见问题解答。