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
Libérer: 2024-10-30 02:59:29
original
768 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal