recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment utiliser une méthode dans un contrôleur dans Laravel pour appeler une méthode dans un autre contrôleur ?

Que dois-je faire si une méthode dans un contrôleur dans Laravel veut appeler une méthode dans un autre contrôleur ?

Par exemple :
AaaController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AaaController extends Controller
{
    public function aaa()
    {
        //...
    }
}

BbbController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class BbbController extends Controller
{
    public function bbb()
    {
        //这里要调用aaa(),应该怎么做?
    }
}

Comment la méthode bbb() dans BbbController doit-elle appeler la méthode aaa() dans AaaController ?

仅有的幸福仅有的幸福2780 Il y a quelques jours802

répondre à tous(6)je répondrai

  • 巴扎黑

    巴扎黑2017-05-16 16:49:42

    Cela montre que vous n'avez pas extrait la logique dans la méthode aaa, orm peut être placé dans le référentiel et les opérations logiques peuvent être placées en service

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 16:49:42

    Ceci n'est généralement pas recommandé.

    $ctrl = \App::make(\App\Http\Controllers\AaaController::class);
    \App::call([$ctrl, "aaa"]);

    Pourquoi est-ce si compliqué au lieu de simplement créer un nouveau AaaController et d'appeler directement la méthode ? Parce que nous devons faire face à l’injection de dépendances.

    répondre
    0
  • PHPz

    PHPz2017-05-16 16:49:42

    Créer une instance du contrôleur A dans le contrôleur B
    Il est possible de l'utiliser de cette façon, mais je ne sais pas si c'est légal ou non

    répondre
    0
  • PHPz

    PHPz2017-05-16 16:49:42

    (nouveau AaaController ())->aaa();

    répondre
    0
  • 迷茫

    迷茫2017-05-16 16:49:42

    Vous pouvez créer un BaseController, et les deux autres contrôleurs héritent conjointement de ce contrôleur. Certaines méthodes publiques peuvent être placées dans le BaseController, ou ajouter un fichier d'assistance

    .

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:49:42

    Si vous devez faire cela, vous pouvez définir la méthode appelée comme méthode statique. Ensuite, le nom de la classe est appelé directement. Mais je ne recommande pas de faire ça

    répondre
    0
  • Annulerrépondre