質問/回答が適用されていますが、オートローダが適切な回答を認識するのに十分ではないと思います。First Composerパッケージ - オートローダが動作しない
.
./vendor
./vendor/autoload.php
./vendor/Pva_agent
./vendor/Pva_agent/Agent.php
./vendor/Pva_agent/composer.json
./vendor/Pva_agent/.gitignore
./vendor/composer
./vendor/composer/autoload_psr4.php
./vendor/composer/autoload_real.php
./vendor/composer/autoload_classmap.php
./vendor/composer/autoload_namespaces.php
./vendor/composer/installed.json
./vendor/composer/autoload_static.php
./vendor/composer/ClassLoader.php
./vendor/composer/LICENSE
./composer.lock
./composer.json
./test_pva_agent.php
私のテストプログラム:
<?php
require_once('vendor/autoload.php');
use Pva_agent\Agent;
$agent = new Agent();
パッケージの作曲をインストールした後
{
"name": "Pva_agent",
"type":"library",
"description" : "query the pva agent",
"version":"0.1b",
"authors" : [
{
"name":"Ed Greenberg",
"email":"[email protected]"
}
],
"minimum-stability":"dev",
"require": {},
"autoload": {
"psr-0": {
"Pva_agent": "."
}
}
}
私のディレクトリ構造:
は、私は次のcomposer.jsonとのパッケージを持っています結果:
[email protected] pva_project $ php test_pva_agent.php
PHP Fatal error: Class 'Pva_agent\Agent' not found in /home/edg/PhpstormProjects/pva_project/test_pva_agent.php on line 6
PHP Stack trace:
PHP 1. {main}() /home/edg/PhpstormProjects/pva_project/test_pva_agent.php:0
[email protected] pva_project $
オートローダーがクラスを見つけられるはずなので、私は 'use'ステートメントは必要ないと思ったのですか?
問題がどこにあるか教えていただけますか?
おかげで、あなたのPva_agentライブラリがvendor/
ディレクトリに座るべきではありません
エド・グリーンバーグ
Hmmm ...ありがとう、ルーカス、あなたの答えはより多くの質問を生成します:)作曲家は私がウェブから入手したものを置くのと同じように、私のライブラリをベンダの下に置きます。 –
作者はあなたのソースコードを 'vendor /'の下に置くべきではありません。 'vendor /'フォルダを掘り下げると、あなたのライブラリへのパスが 'vendor/composer/autoload_psr4.php'に表示されます。例として、私の[PhiKettle library](https://github.com/loftdigital/PhiKettle)の構造をチェックすることができます。プロジェクトをクローンし、 'composer update'を実行してください。 –