Melaksanakan Fasad Laravel yang mudah menggunakan ciri ciri PHP
Lajur tutorial Laravel berikut akan memperkenalkan kepada anda cara menggunakan ciri PHP untuk melaksanakan Fasad mudah saya harap ia akan membantu anda.
Penerangan ringkas
Facade
boleh membantu saya merealisasikan kaedah statik secara berkesan Laravel
Kebanyakan pek pengembangan menggunakan Facade
. [Disyorkan: Tutorial Video Laravel]Facade
mudah berikut terutamanya menggunakan ciri PHP trait
, kaedah ajaib __callStatic
dan kelas refleksi ReflectionClass
.
Senario Penggunaan
Kebanyakan sistem latar belakang akan mempunyai operasi yang serupa dengan ini:
<?php $user = User::find($id);if (!$user) { throw new \Expection("资源不存在");}
Ini nampaknya tiada apa-apa . Masalah, tetapi akan ada yang berikut:
$article = Article::find($id);if (!$article) { throw new \Expection("资源不存在");}$article->delete();
Cara penulisan ini sangat tidak elegan.
Kod
1. Mula-mula kita patut ada Perkhidmatan
<?phpnamespace App\Services;use App\Traits\ModeServiceTrait;class ModelService extends BaseService{ use ModeServiceTrait;}
2. Cipta Sifat baharu
ciri wujud untuk pelbagai warisan Anda boleh pergi ke tapak web rasmi PHP untuk membaca dokumentasi.
<?php namespace App\Traits; use \ReflectionClass; use \Exception;use \ReflectionException; use Illuminate\Database\Eloquent\Model; use App\Exceptions\ResourceException; /** * @method static Model find(string $className, int $id, callable $callback = null) * * @see Model * @package App\Services */trait ModeServiceTrait{ /** * 回调方法 * * @param Model|null $model * @param string $method * @return Model * @throws ResourceException */ public static function callback(Model|null $model, string $method): Model { switch ($method) { case 'first': case 'find': if (!$model) { throw new ResourceException("资源不存在"); } break; default: break; } return $model; } /** * 调用不存在的方法时触发 * * @param $method * @param $args * @return false|mixed * @throws ReflectionException * @throws ResourceException * @throws Exception */ public static function __callStatic($method, $args) { $className = $args[0]; $arg = $args[1]; // 判断模型类是否存在 if (!class_exists($className)) { throw new Exception("The class {$className} could not be found. from:" . __CLASS__); } // 利用反射实例化其类 $reflection = new ReflectionClass($className); $instance = $reflection->newInstanceArgs(); // 调用该不存在的方法 $model = call_user_func_array([$instance, $method], [$arg]); // 如果存在复杂操作交给 callback return isset($args[2]) ? $args[2]($model) : self::callback($model, $method); }}
Mula-mula kita fokus pada __callStatic
kaedah ajaib ini. Kaedah ini dicetuskan apabila kaedah statik yang tidak wujud dipanggil. Kaedah sihir yang serupa dengannya ialah __call
. Ini menggunakan __callStatic
untuk mencapai kesan Facade
.
__callStatic
mempunyai dua parameter panggil balik $method
ialah 被调用的且不存在的方法
dan $args
ialah parameter (dalam bentuk tatasusunan) yang diluluskan dalam kaedah $method
.
trait
semudah itu sudah selesai.
Gunakan
untuk mencipta yang baharu command
$ php artisan make:command TestCommand
dan tulis kandungan berikut
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Services\ModelService; use App\Models\Article\Article; class TestCommand extends Command{ /** * The name and signature of the console command. * * @var string */ protected $signature = 'test:test'; /** * The console command description. * * @var string */ protected $description = 'a test'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. */ public function handle() { $article = ModelService::find(Article::class, 1); $article = ModelService::find(Article::class, 1, function ($model) { return $model->load('author'); }); }}
Model Article
perlu dicipta sendiri.
Seterusnya anda boleh melihat kesannya:
$ php artisan test:test
Kesimpulan
Dengan cara ini kita meninggalkan penggunaan abstract
abstraksi kelas untuk mencapai kesan yang sama seperti Facade
. Pada masa yang sama, penggunaan semula kod juga dicapai.
Menggunakan program dengan cara ini akan mengambil lebih banyak langkah, tetapi berbanding dengan keanggunan, prestasi tidak penting.
Ungkapan tidak begitu jelas, anda perlu memahaminya dengan mendalam. <
Atas ialah kandungan terperinci Melaksanakan Fasad Laravel yang mudah menggunakan ciri ciri PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHPtraitDTO: Memudahkan pembangunan objek pemindahan data Pengenalan: Dalam pembangunan perisian moden, objek pemindahan data (DataTransferObject, dirujuk sebagai DTO) memainkan peranan penting. DTO ialah bekas data tulen yang digunakan untuk memindahkan data antara lapisan. Walau bagaimanapun, semasa proses pembangunan, pembangun perlu menulis sejumlah besar kod serupa untuk mentakrif dan mengendalikan DTO. Untuk memudahkan proses ini, ciri ciri telah diperkenalkan dalam PHP Kita boleh menggunakan ciri ciri untuk

Pemahaman mendalam tentang corak reka bentuk dan amalan PHPtraitDTO Pengenalan: Dalam pembangunan PHP, corak reka bentuk adalah bahagian penting. Antaranya, DTO (DataTransferObject) ialah corak reka bentuk yang biasa digunakan untuk merangkum objek pemindahan data. Dalam proses melaksanakan DTO, menggunakan ciri (ciri) boleh meningkatkan kebolehgunaan semula dan fleksibiliti kod dengan berkesan. Artikel ini akan menyelidiki corak reka bentuk dan amalan traitDTO dalam PHP

PHPtraitDTO: Alat utama untuk mengoptimumkan proses penghantaran data, contoh kod khusus diperlukan Pengenalan: Semasa proses pembangunan, penghantaran data adalah keperluan yang sangat biasa, terutamanya apabila data dipindahkan antara tahap yang berbeza. Dalam proses penghantaran data ini, kami selalunya perlu memproses, mengesahkan atau menukar data untuk memenuhi keperluan perniagaan yang berbeza. Untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod, kami boleh menggunakan PHPtraitDTO (DataTransferObject) untuk mengoptimumkan

PHPtraitDTO: Melaksanakan kesederhanaan dan fleksibiliti objek pemindahan data Pengenalan: Dalam proses pembangunan PHP, penghantaran dan pemprosesan data sering terlibat. DataTransferObject (pendek kata DTO) ialah corak reka bentuk yang digunakan untuk memindahkan data antara lapisan yang berbeza. Semasa proses penghantaran, DTO memudahkan operasi data dengan merangkum data dan menyediakan kaedah capaian awam. Artikel ini akan memperkenalkan cara menggunakan PHPtrait untuk melaksanakan DT

Melaksanakan rangka kerja pemindahan data yang boleh disesuaikan menggunakan PHPtraitDTO Apabila tapak web dan aplikasi menjadi lebih kompleks, pemindahan data menjadi semakin penting. Dalam PHP, menggunakan DataTransferObject (pendek kata DTO) untuk mengendalikan pemindahan data boleh memudahkan kod dan meningkatkan kebolehselenggaraan dan kebolehskalaan. Artikel ini akan memperkenalkan cara menggunakan PHPtrait dan DTO untuk melaksanakan rangka kerja pemindahan data yang boleh disesuaikan dan menyediakan contoh kod yang sepadan.

PHPtraitDTO: Gambaran Keseluruhan Corak Objek Pemindahan Data Elegan: Objek Pemindahan Data (pendek kata DTO) ialah corak reka bentuk yang digunakan untuk memindahkan data antara lapisan yang berbeza. Dalam aplikasi, selalunya perlu untuk mendapatkan data daripada pangkalan data atau perkhidmatan luaran dan menghantarnya antara lapisan aplikasi yang berbeza. Mod DTO boleh menjadikan penghantaran data lebih ringkas dan jelas, dan juga memudahkan pengembangan dan penyelenggaraan. Dalam PHP, kita boleh menggunakan ciri untuk melaksanakan DTO

PHPtraitDTO: Alat utama untuk mengoptimumkan proses penghantaran data Contoh kod khusus diperlukan Dalam proses pembangunan, penghantaran data adalah pautan yang sangat kritikal. Cara menghantar data dengan cekap telah menjadi salah satu masalah yang perlu diselesaikan oleh pembangun. Dalam bahasa PHP, menggunakan traitDTO (DataTransferObject) boleh mengoptimumkan proses penghantaran data dan meningkatkan kecekapan penghantaran data. Artikel ini akan memperkenalkan apa itu traitDTO dan cara menggunakannya untuk mengoptimumkan aliran pemindahan data

Bagaimana untuk melanjutkan fungsi PHP tersuai menggunakan ciri? Tentukan sifat yang mengandungi kaedah sambungan. Gunakan kata kunci penggunaan untuk memasukkan ciri ke dalam fungsi tersuai. Akses kaedah ciri melalui $this dalam fungsi tersuai.
