Php 作曲家自动加载
我目前正在尝试使用PSR-0自动加载Composer,但出现以下错误: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
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常见问题解答。