私は Laravel を初めて使い、PHP 名前空間全般を使用しています。File という名前のモデルを作成するまで、問題に遭遇したことはありませんでした。File モデル クラスを使用できるように、名前空間を正しく設定するにはどうすればよいでしょうか?
ファイルはapp/controllers/FilesController.php
とです。でapp/models/File.php
新しい を作成しようとしています。File
FilesController.php
ベストアンサー1
名前空間の設定は、一度コツをつかめば非常に簡単です。
次の例を見てみましょう。
app/モデル/File.php<?php
namespace App\Models;
class File {
public function someMethodThatGetsFiles()
{
}
}
アプリ/コントローラ/FileController.php<?php
namespace App\Controllers;
use App\Models\File;
class FileController {
public function someMethod()
{
$file = new File();
}
}
名前空間を宣言します。
namespace App\Controllers;
覚えておいてください。PHP の組み込みクラスにアクセスするためにクラスを名前空間に配置したら、ルート名前空間から呼び出す必要があります。例: は次の$stdClass = new stdClass();
ようになります$stdClass = new \stdClass();
( を参照\
)。
他の名前空間を「インポート」する:
use App\Models\File;
File
これにより、名前空間プレフィックスなしでクラスを使用できるようになります。
あるいは、次のように呼び出すこともできます:
$file = new App\Models\File();
use
ただし、コードをスキャンしなくてもファイルの依存関係をすべて確認できるため、ステートメントの先頭に配置するのがベストプラクティスです。
それが完了したら、composer dump-autoload
新しく追加されたクラスを考慮に入れるために、Composer の自動ロード機能を更新するために実行する必要があります。
URL 経由で FileController にアクセスする場合は、ルートを定義して、次のように完全な名前空間を指定する必要があります。
Route::get('file', 'App\\Controllers\\FileController@someMethod');
これにより、すべてのGET /fileリクエストがコントローラのsomeMethod()