Laravel ialah rangka kerja PHP yang sangat popular yang menyediakan banyak ciri mudah, salah satunya ialah bekas. Bekas Laravel ialah sistem suntikan kebergantungan yang membolehkan kami mengurus kejadian objek dengan mudah dalam aplikasi kami. Dalam artikel ini, kita akan belajar tentang bekas Laravel dan cara menggunakannya.
Bekas Laravel ialah bekas IoC, iaitu bekas suntikan kebergantungan. Ia adalah pendaftaran yang membolehkan pengurusan mudah objek dalam aplikasi. Objek ini boleh menjadi apa sahaja termasuk perkhidmatan, perisian tengah, pengawal, model, dll.
Menggunakan bekas Laravel mempunyai dua faedah utama:
Bekas Laravel boleh digunakan dengan mudah dalam aplikasi. Pertama, kita perlu memahami salah satu konsep teras bekas - mengikat.
Pengikatan
Pengikatan ialah proses mengikat kelas atau antara muka ke dalam bekas. Apabila kita memerlukan contoh terikat, bekas menyediakannya. Dalam Laravel, pengikatan dilakukan menggunakan kaedah bind/bindShared. Kaedah bind mengikat contoh, manakala kaedah bindShared mengikat satu.
Sebagai contoh, kami ingin mengikat kelas operasi pangkalan data. Kita boleh mengikatnya ke dalam bekas menggunakan kod berikut dalam Laravel:
App::bind('db', function() { return new Database; });
Ini akan mengikat kelas yang dipanggil "db" dan apabila kita memanggil "db" bekas itu akan mengembalikan sambungan baharu.
Dependency Injection
Dependency Injection adalah salah satu fungsi utama bekas Laravel. Ia merujuk kepada menghantar kebergantungan kepada objek dan bukannya menghidupkannya di dalam objek.
Sebagai contoh, kami mempunyai pengawal yang memerlukan objek pangkalan data sebagai parameter. Kami boleh menggunakan suntikan kebergantungan untuk menghantarnya kepada pengawal:
class UserController extends Controller { protected $db; public function __construct(Database $db) { $this->db = $db; } public function index() { $users = $this->db->table('users')->get(); return view('users.index', compact('users')); } }
Dalam contoh ini, kami menggunakan suntikan kebergantungan untuk menghantar objek pangkalan data instantiated kepada pengawal. Operasi ini dilakukan secara automatik oleh bekas Laravel.
Dalam Laravel, anda boleh menggunakan dua kaedah untuk suntikan kebergantungan. Satu suntikan konstruktor dan satu lagi suntikan kaedah. Contoh kod di atas menggunakan suntikan pembina.
Suntikan kaedah
Suntikan kaedah ialah satu lagi cara suntikan kebergantungan. Ia boleh menyuntik contoh kelas dalam kaedah seperti yang diperlukan.
Sebagai contoh, kami mempunyai kelas yang mengendalikan pengguna, yang mempunyai kaedah getUser, yang memerlukan contoh kelas Auth. Kita boleh menyuntik contoh ini dalam parameter kaedah:
class UserService { public function getUser(Auth $auth) { return $auth->user(); } }
Dalam contoh ini, apabila kita memanggil kaedah getUser, bekas Laravel akan secara automatik menyuntik tika kelas Auth.
Bekas Laravel boleh digunakan dalam banyak senario. Berikut ialah beberapa senario biasa:
Pembekal perkhidmatan ialah salah satu konsep yang biasa digunakan dalam bekas Laravel. Ia adalah kelas yang menyediakan perkhidmatan kepada aplikasi. Contohnya, dalam Laravel, kami boleh mendaftarkan pembekal perkhidmatan menggunakan kod berikut:
class AppServiceProvider extends ServiceProvider { public function boot() { // } public function register() { $this->app->bind('db', function() { return new Database; }); } }
Dalam kod di atas, kami mengikat perkhidmatan bernama "db" yang akan mengembalikan sambungan pangkalan data baharu.
Middleware ialah kelas yang dipanggil semasa proses pemprosesan permintaan Laravel. Dalam perisian tengah, kami boleh mengubah suai atau meningkatkan permintaan dan respons HTTP. Kami boleh menggunakan bekas Laravel untuk menyuntik perisian tengah ke dalam aplikasi:
class ExampleMiddleware { public function handle($request, Closure $next) { // 处理请求 $response = $next($request); // 处理响应 return $response; } }
Dalam kod di atas, kami telah menentukan perisian tengah yang dipanggil ExampleMiddleware yang akan mengendalikan permintaan dan respons HTTP.
Pengawal Laravel ialah kelas yang digunakan untuk mengendalikan permintaan HTTP. Kita boleh menggunakan bekas Laravel untuk menyuntik pengawal ke dalam aplikasi:
class UserController extends Controller { protected $db; public function __construct(Database $db) { $this->db = $db; } public function index() { $users = $this->db->table('users')->get(); return view('users.index', compact('users')); } }
Dalam kod di atas, kami membuat instantiate dan menyuntik kelas pangkalan data ke dalam pengawal UserController.
Bekas Laravel ialah bekas suntikan kebergantungan yang berkuasa. Ia membolehkan kami mengurus kejadian objek dengan mudah dan menjadikan kod kami lebih mudah untuk diuji dan dilanjutkan. Dalam aplikasi Laravel, kita boleh menggunakan bekas untuk menyelesaikan banyak tugas seperti mendaftarkan penyedia perkhidmatan, perisian tengah dan pengawal. Jika anda ingin mengetahui lebih lanjut tentang bekas Laravel, lihat dokumentasi Laravel rasmi.
Atas ialah kandungan terperinci Cara menggunakan bekas laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!