Rumah > Soal Jawab > teks badan
Apakah yang perlu saya lakukan jika kaedah dalam satu pengawal dalam laravel ingin memanggil kaedah dalam pengawal lain?
Contohnya:
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(),应该怎么做?
}
}
Bagaimanakah kaedah bbb() dalam BbbController harus memanggil kaedah aaa() dalam AaaController?
巴扎黑2017-05-16 16:49:42
Ini menunjukkan bahawa anda belum mengekstrak logik dalam kaedah aaa, orm boleh diletakkan dalam Repositori, dan operasi logik boleh diletakkan dalam perkhidmatan
PHP中文网2017-05-16 16:49:42
Ini biasanya tidak disyorkan.
$ctrl = \App::make(\App\Http\Controllers\AaaController::class);
\App::call([$ctrl, "aaa"]);
Mengapa ia begitu rumit dan bukannya hanya mencipta AaaController baharu dan memanggil kaedah secara terus? Kerana kita perlu berurusan dengan suntikan pergantungan.
PHPz2017-05-16 16:49:42
Buat contoh pengawal A dalam pengawal B
Adalah mungkin untuk menggunakannya dengan cara ini, tetapi saya tidak tahu sama ada ia sah atau tidak
迷茫2017-05-16 16:49:42
Anda boleh membina BaseController, dan dua controller yang lain bersama-sama mewarisi pengawal ini Beberapa kaedah awam boleh diletakkan dalam BaseController, atau menambah fail pembantu
大家讲道理2017-05-16 16:49:42
Jika anda mesti melakukan ini, anda boleh menentukan kaedah yang dipanggil sebagai kaedah statik. Kemudian nama kelas dipanggil terus. Tetapi saya tidak mengesyorkan melakukan ini