Maison > Questions et réponses > le corps du texte
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 ?
巴扎黑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
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.
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
迷茫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
.大家讲道理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