ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 5で複数のコントローラー間でコントローラーメソッドにアクセスするにはどうすればよいですか?

Laravel 5で複数のコントローラー間でコントローラーメソッドにアクセスするにはどうすればよいですか?

DDD
リリース: 2024-10-29 08:58:30
オリジナル
653 人が閲覧しました

How to Access Controller Methods Across Controllers in Laravel 5?

Laravel 5 のコントローラー間でコントローラーメソッドにアクセスする

Laravel 5 では、複雑なアプリケーションを構築するときに、別のコントローラーからメソッドにアクセスすることが必要になる場合があります。これを実現するためのいくつかのアプローチを次に示します。

直接呼び出し

このアプローチでは、次の構文を使用してコントローラー メソッドを直接呼び出します。

<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
ログイン後にコピー

whileこれは機能しますが、コード構成が不十分になる可能性があります。

コントローラーの拡張

もう 1 つのオプションは、PrintReportController を拡張して、SubmitPerformanceController がそのメソッドを継承できるようにすることです。ただし、このアプローチは親コントローラーから他のすべてのメソッドも継承するため、理想的ではない可能性があります。

トレイトの利用

推奨される解決策には、アプリでトレイトを作成することが含まれます。 /Traits ディレクトリ。トレイトは、継承せずに複数のコントローラー間で共通の機能を共有する方法を提供します。次に例を示します。

PrintReport Trait

<code class="php">trait PrintReport {

    public function getPrintReport() {
        // Implement the logic for generating the report
    }
}</code>
ログイン後にコピー

Applying Traits to Controllers

use PrintReport ステートメントをトレイトにアクセスする必要があるコントローラ:

<code class="php">class PrintReportController extends Controller {
     use PrintReport;
}

class SubmitPerformanceController extends Controller {
     use PrintReport;
}</code>
ログイン後にコピー

トレイトを使用すると、どちらのコントローラも $this->getPrintReport() を通じて getPrintReport メソッドを直接利用できます。あるいは、このメソッドを直接アクセスのルートとしてマップすることもできます。

特性を利用すると、Laravel アプリケーション開発におけるコードの再利用、編成、柔軟性が促進されます。

以上がLaravel 5で複数のコントローラー間でコントローラーメソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート