我目前正在尝试使用Composer进行PSR-0自动加载,但是我收到以下错误:
Fatal error: Class 'Twitter\Twitter' not found
我的目录结构如下所示
- Project
- src
- Twitter
Twitter.php
- vendor
- Test
index.php
我的index.php文件如下所示:
<?php
use Twitter;
$twitter = new Twitter();
我的Twitter.php文件看起来像这样
<?php
namespace Twitter;
class Twitter
{
public function __construct()
{
// Code Here
}
}
最后我的composer.json看起来像这样:
{
"require": {
"phpunit/phpunit": "3.8.*@dev",
"guzzle/guzzle": "3.7.*@dev"
},
"minimum-stability": "dev",
"autoload": {
"psr-0": {
"Twitter" : "src/Twitter"
}
}
}
我有点困惑。我来自C#背景,这种工作方式让我感到困惑。使用PSR-0自动加载的正确方法是什么?
答案 0 :(得分:11)
在你的composer.json中使用:
"autoload": {
"psr-0": {
"": "src/"
}
}
或
"autoload": {
"psr-0": {
"Twitter\\": "src/"
}
}
然后运行php composer.phar dump-autoload
答案 1 :(得分:3)
使用
"psr-0": {
"Twitter" : "src/"
}
这指示编写者创建自动加载器,它将在src
中查找Twitter
命名空间中的所有内容。由于它是PSR-0
,因此命名空间被视为文件夹并添加到声明的路径中,因此您不应将其包含在composer.json
答案 2 :(得分:2)
首先,
我的index.php文件如下所示:
use Twitter; $twitter = new Twitter();
如果是你的index.php,你首先忘记包含作曲家的自动加载脚本。
require __DIR__ . '/vendor/autoload.php';
有关详细信息,请参阅https://getcomposer.org/doc/01-basic-usage.md#autoloading。
答案 3 :(得分:1)
index.php中有错误,应该是:
use Twitter\Twitter;
$twitter = new Twitter();
要么
$twitter = new Twitter\Twitter();
答案 4 :(得分:0)
这是一个非常晚的回复,但你要做的第一件事就是#34;自动加载&#34;作品是你的PHP版本是5.6及以上。