Laravel 5で別のコントローラーからコントローラーメソッドにアクセスする方法は?

Susan Sarandon
リリース: 2024-11-02 18:08:29
オリジナル
661 人が閲覧しました

How to Access Controller Methods from Another Controller in Laravel 5?

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

Laravel で複数のコントローラーを操作する場合、1 つのコントローラーからメソッドにアクセスする必要がある場合があります。別のコントローラー内にあります。これはさまざまなアプローチで実現できますが、それぞれに独自の長所と短所があります。

ダイレクト アクセス

1 つの方法は、コントローラーの名前を渡すダイレクト アクセスです。および app() 関数の引数として呼び出すメソッド。たとえば、SubmitPerformanceController では、次のように PrintReportController の getPrintReport() メソッドにアクセスできます。

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

このアプローチは機能しますが、ベスト プラクティスとはみなされず、コード構成の問題が発生する可能性があります。

継承

もう 1 つのオプションは、SubmitPerformanceController 内で PrintReportController を継承し、getPrintReport() メソッドに直接アクセスできるようにすることです。ただし、このアプローチは親コントローラーから他のすべてのメソッドも継承するため、望ましくない可能性があります。

<code class="php">class SubmitPerformanceController extends PrintReportController {
    // ...
}</code>
ログイン後にコピー

Traits

より洗練された解決策には、トレイトの使用が含まれます。目的のメソッドを含むトレイト (例: app/Traits/PrintReport.php) を作成し、そこにロジックを実装します。次に、use キーワードを使用して、SubmitPerformanceController と PrintReportController にトレイトを含めます。

<code class="php">trait PrintReport {
    public function getPrintReport() {
        // Logic here
    }
}

class PrintReportController extends Controller {
    use PrintReport;
}

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

トレイトを利用することで、両方のコントローラーは $this->getPrintReport() を使用して getPrintReport() メソッドにアクセスできます。このアプローチにより、コードの再利用性とより良い組織化が促進されます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!