新しくインストールしたLaravelで簡単なクラスを作成しようとしています。このために、フォルダーapp/Convertを作成し、そこにphpファイルを配置しました。クラスは次のようになります。
<?php
namespace App\Convert;
class Converter
{
public function __construct()
{
...Code
}
}
ティンカーからアクセスしようとすると:
use App\Convert\Converter;
new Converter;
私は得る:
PHP Fatal error: Class 'App/Convert/Converter' not found in Psy Shell code on line 1
私は何を間違えていますか?私が理解しているようにlaravelはアプリフォルダとそのサブフォルダ内のファイルを自動実行する必要がありますか、間違っていますか?
編集:間違って最初に書いたときは申し訳ありません(名前空間でいろいろ遊んでいるので、間違ったバージョンを使用しました)。問題は、実際にはファイル名がConverter.php以外の名前であったため、Converter.phpに変更したときに状況が変化し始めたことです。彼がコメントではなく回答として置いた場合、デボンの答えを正しい答えに設定します。ここに書いてください:
クラスを含むファイルの名前はクラス名と同じである必要があります。また、ファイルへのパスは名前空間のパスと同じです。(答えの下のマシューのコメントを参照)
クラスの名前空間は、インポートの方法とは異なります。そこでApp\Convert
として設定します。 App\Convert\Converter
としてインポートする必要があります。
クラスの完全修飾クラス名には、名前空間とクラス名が含まれます。そのため、たとえば、App\Foo
という名前空間を持つBar
というクラスがある場合、完全修飾クラス名はApp\Foo\Bar
であり、Bar
、次のようにインポートする必要があります。
use App\Foo\Bar;
また、デボンが以下に述べたように、デフォルトのLaravelオートローダー設定を取得するには、app/Foo/Bar.php
にクラスを含むファイルが必要です。
キャッシュをクリアする必要がある場合がありますが、私の場合はこのコマンドが機能しました:
composer dump-autoload
私もそれがあなたのために働くことを願っています
よろしく