Maison >développement back-end >tutoriel php >Comment puis-je accéder aux méthodes d'un contrôleur dans un autre contrôleur dans Laravel 5 ?

Comment puis-je accéder aux méthodes d'un contrôleur dans un autre contrôleur dans Laravel 5 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 02:59:29725parcourir

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

Accès aux méthodes de contrôleur entre les contrôleurs dans Laravel 5

Lorsque vous travaillez avec plusieurs contrôleurs dans Laravel, il peut y avoir des scénarios dans lesquels vous devez accéder à une méthode d'un contrôleur dans un autre . Ceci peut être réalisé grâce à diverses techniques, comme indiqué ci-dessous.

Utilisation de la façade de l'application

Cette approche implique d'accéder à la méthode du contrôleur directement à l'aide de la façade de l'application :

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

Pendant que cela fonctionne, cela n'est pas recommandé à des fins d'organisation du code.

Héritage

Une autre option consiste à hériter du contrôleur contenant la méthode souhaitée. Par exemple, si SubmitPerformanceController doit accéder à la méthode getPrintReport depuis PrintReportController :

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

Cependant, cette approche peut conduire à l'héritage de méthodes inutiles.

Les traits

Les traits sont une solution privilégiée pour partager des fonctionnalités communes entre les contrôleurs sans les inconvénients de l’héritage. Voici comment utiliser les traits :

Créer un trait

Définir un trait dans app/Traits :

<code class="php">trait PrintReport {

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

Inclure le trait dans Contrôleurs

Ajoutez le trait aux deux contrôleurs :

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

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

Avec cette approche, les deux contrôleurs peuvent accéder à la méthode getPrintReport via $this->getPrintReport().

Conseils supplémentaires

  • Considérez l'espace de noms du contrôleur auquel vous accédez.
  • Les routes peuvent directement invoquer des méthodes de contrôleur si elles sont mappées dans routes.php.
  • Pour plus d'informations sur les traits, reportez-vous à la documentation officielle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn