ホームページ  >  記事  >  バックエンド開発  >  Laravel 5で、あるコントローラーから別のコントローラーのメソッドにアクセスするにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 02:59:29645ブラウズ

How Can I Access Methods from One Controller in Another Controller in Laravel 5?

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

Laravel で複数のコントローラーを操作する場合、あるコントローラーから別のコントローラー内のメソッドにアクセスする必要があるシナリオが発生する場合があります。 。これは、以下で説明するように、さまざまな手法を通じて実現できます。

アプリ ファサードの使用

このアプローチには、アプリ ファサードを使用してコントローラー メソッドに直接アクセスすることが含まれます。

<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>

whileこれは機能しますが、コード編成の目的ではお勧めできません。

継承

もう 1 つのオプションは、目的のメソッドを含むコントローラーを継承することです。たとえば、SubmitPerformanceController が PrintReportController から getPrintReport メソッドにアクセスする必要がある場合:

<code class="php">class SubmitPerformanceController extends PrintReportController {
    // ...
}</code>

ただし、このアプローチでは不要なメソッドの継承が発生する可能性があります。

Traits

Traits はこれは、継承の欠点を持たずにコントローラー間で共通の機能を共有するための推奨ソリューションです。特性の使用方法は次のとおりです:

特性を作成します

アプリ/特性で特性を定義します:

<code class="php">trait PrintReport {

    public function getPrintReport() {
        // ...
    }
}</code>

特性を含めますコントローラ内

両方のコントローラにトレイトを追加します:

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

class SubmitPerformanceController extends Controller {
    use PrintReport;
}</code>

このアプローチでは、両方のコントローラが $this->getPrintReport() 経由で getPrintReport メソッドにアクセスできます。

追加のヒント

  • アクセスしているコントローラーの名前空間を考慮してください。
  • ルートは、routes.php にマップされている場合、コントローラー メソッドを直接呼び出すことができます。
  • 特性の詳細については、公式ドキュメントを参照してください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。