現在、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自動読み込みを使用する正しい方法は何ですか?
Composer.jsonで使用するもの:
"autoload": {
"psr-0": {
"": "src/"
}
}
または
"autoload": {
"psr-0": {
"Twitter\\": "src/"
}
}
次に、php composer.phar dump-autoload
を実行します
使用する
"psr-0": {
"Twitter" : "src/"
}
これは、composerオートローダーを作成するように指示します。オートローダーは、src
名前空間からすべてをTwitter
で検索します。PSR-0
であるため、名前空間が処理されます。フォルダとして宣言されたパスに追加されるため、composer.json
のパス部分に含めないでください。
まず第一に、
私のindex.phpファイルは次のようになります:
use Twitter; $Twitter = new Twitter();
Index.phpの場合は、最初にコンポーザーの自動ロードスクリプトを含めるのを忘れていました。
require __DIR__ . '/vendor/autoload.php';
詳細については、 https://getcomposer.org/doc/01-basic-usage.md#autoloading を参照してください。
Index.phpにエラーがあります。次のようになります:use Twitter\Twitter; $Twitter = new Twitter();
または$Twitter = new Twitter\Twitter();
これは非常に遅い返信ですが、「自動読み込み」を機能させるために最初に必要なことは、PHPバージョンを5.6以降にすることです。