前の章では、Laravel フレームワークでバックエンド フォルダーを作成する方法を説明しました。
次に、別のコンテンツを追加しましょう。
アプリディレクトリには次のような開始ディレクトリもあります:
Composer の使用に加えて、Laravel クラスローダーを使用して次のことを行うこともできます
コントローラーとモデルをロードします。これは、
をすべて保持するのに役立ちます。
Composer を更新せずに、クラスを「グローバル」名前空間に追加します。
訳してみましょう: Composer の使用に加えて、Laravel のクラスローダーを使用してコントローラーとモデルをロードすることもできます。
これは、Composer の更新を使用せずにクラスをグローバル名前空間に保持する場合に便利です。
ここにコードの断片があります
ClassLoader::addDirectories(array(
)
app_path().'/commands',
app_path().'/controllers',
//app_path().'/controllers/admin',
app_path().'/models',
app_path().'/database/seeds',
));
はい、これらのフォルダーは、私たちがよく使用するフォルダー、コントローラー、コマンド、モデル、データベース シードです
これらのフォルダー内のコンテンツは、グローバル名前空間に自動的にロードできます。
しかし、私が注釈を付けたコンテンツがもう 1 つあります。このコンテンツの目的は何ですか...
つまり、controllers ディレクトリ内の admin のコントローラーにもグローバル名前空間があり、これをルーティング テーブルに直接渡すことができます
。私たちのコントローラー名をここで受け取ります。
テストしてみたら本当に成功したので、composer dumpautoload はもう必要ありません
しかし、まだ問題があります。管理フォルダー内に外部と同じ名前のコントローラーがある場合はどうすればよいですか?
私も実験をしましたが、最終的にどれを選択するかについては、上記のロード順序に依存することがわかりました。
はいの場合app_path().'/controllers',
app_path().'/controllers/admin',
その場合、外部コントローラーが有効になります。それ以外の場合、管理フォルダー内のコントローラーが有効になります。
以前に書いたことと組み合わせると、実際、最も安全で高度な方法は名前空間を使用することです。
しかし、書くのはもう少し複雑になります... 最悪の場合でも、これらのコントローラーが競合しないように注意するだけで、小規模なプロジェクトの場合はこの方法を検討できます。
コントロールできないわけじゃないですよね一度に一つのことをやって、うまくやってください。
ご多幸をお祈りします