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 ?
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
Ceci n'est généralement pas recommandé.
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.
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
(nouveau AaaController ())->aaa();
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
.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