国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah pembangunan bahagian belakang tutorial php PHP Master | Bekerja dengan middleware langsing

PHP Master | Bekerja dengan middleware langsing

Feb 24, 2025 am 09:00 AM

Rangka Kerja Slim Middleware: Membina Aplikasi Mikro PHP yang kuat

Slim adalah rangka kerja Mini PHP yang kuat, di mana ciri middleware membolehkan pelaksanaan pelbagai perkhidmatan gaya penapis seperti pengesahan dan caching dalam aplikasi. Middleware merangkumi aplikasi dan boleh menjejaskan persekitaran aplikasi serta objek permintaan dan tindak balas.

Mata utama:

  • Middleware Slim adalah ciri yang kuat yang membolehkan pelaksanaan pelbagai perkhidmatan gaya penapis seperti pengesahan dan caching. Middleware merangkumi aplikasi dan boleh menjejaskan persekitaran aplikasi, permintaan dan tindak balas aplikasi.
  • Untuk melaksanakan middleware dalam Slim, anda perlu menulis kelas yang memanjangkan kelas SlimMiddleware dan mengatasi kaedah call(). Kaedah ini adalah titik masuk middleware, dari mana anda boleh kembali (mengganggu proses pelaksanaan) atau hubungi lapisan seterusnya. Middleware kemudian boleh memanipulasi tajuk dan badan respons.
  • Gunakan kaedah Slim add() untuk mendaftarkan middleware dalam aplikasi Slim. Pelbagai middleware boleh didaftarkan dengan panggilan seterusnya ke kaedah add(). Middleware mesti ditambah dalam susunan perintah panggilan yang bertentangan, kerana middleware baru akan mengelilingi mana -mana middleware yang ditambah sebelumnya. Konfigurasi middleware biasanya dilakukan melalui pembina perkhidmatan.

pemahaman middleware tipis

Dokumentasi Slim menyamakan aplikasi tipis ke bawang, setiap lapisan bawang adalah middleware. Ini adalah metafora yang sesuai. Untuk memahaminya dengan lebih baik, mari kita anggap kita menulis aplikasi yang menggunakan pengesahan dan caching. Senibina kami mungkin kelihatan seperti ini:

PHP Master | Working with Slim Middleware

Kod yang bertanggungjawab untuk menjana kandungan halaman dibalut dalam beberapa lapisan middleware, yang paling penting ialah logik pengesahan dan logik cache. Proses pelaksanaan melalui setiap lapisan, sama ada membenarkan aliran ke lapisan seterusnya atau dipindahkan. Periksa terlebih dahulu sama ada pengguna telah meluluskan pengesahan. Jika tidak, proses itu terganggu dan status HTTP 401 dikembalikan. Kemudian periksa sama ada salinan kandungan cache boleh digunakan. Jika ya, proses itu terganggu menggunakan salinan halaman cache halaman. Mungkin ada lapisan middleware yang lain sehingga proses akhirnya mencapai logik yang bertanggungjawab untuk menjana halaman. Apabila kaedah middleware kami kembali, proses pelaksanaan akan gelembung kembali melalui mereka. Sebagai contoh, seluruh logik middleware cache akan cache kandungan halaman untuk carian kemudian.

pelaksanaan middleware

Untuk memahami cara melaksanakan middleware tersuai, mari kita lihat kod yang boleh digunakan sebagai middleware cache yang disebutkan di atas. Sebenarnya terdapat sedikit keperluan untuk melaksanakan sebarang komponen middleware yang tipis asas. Kami hanya perlu menulis kelas yang memanjangkan kelas

dan mengatasi kaedah SlimMiddleware. Titik masuk middleware adalah kaedah call() ini, dari mana kita boleh kembali (dan dengan itu mengganggu proses pelaksanaan) atau panggil lapisan seterusnya. call()

<?php namespace MyMiddleware;

class Cache extends SlimMiddleware
{
    protected $db;

    public function __construct(PDO $db)
    {
        $this->db = $db;
    }

    public function call()
    {
        $key = $this->app->request()->getResourceUri();
        $rsp = $this->app->response();

        $data = $this->fetch($key);
        if ($data) {
            // 緩存命中...返回緩存的內(nèi)容
            $rsp["Content-Type"] = $data["content_type"];
            $rsp->body($data["body"]);
            return;
        }

        // 緩存未命中...繼續(xù)生成頁面
        $this->next->call();

        if ($rsp->status() == 200) {
            // 緩存結(jié)果以供將來查找
            $this->save($key, $rsp["Content-Type"], $rsp->body());
        }
    }

    protected function fetch($key)
    {
        $query = "SELECT content_type, body FROM cache
            WHERE key = " . $this->db->quote($key);
        $result = $this->db->query($query);
        $row = $result->fetch(PDO::FETCH_ASSOC);
        $result->closeCursor();
        return $row;
    }

    protected function save($key, $contentType, $body)
    {
        $query = sprintf("INSERT INTO cache (key, content_type, body)
            VALUES (%s, %s, %s)",
            $this->db->quote($key),
            $this->db->quote($contentType),
            $this->db->quote($body)
        );
        $this->db->query($query);
    }

}

call() Kaedah Pertama, periksa sama ada kandungan tersedia dalam cache. Jika ya, ia menetapkan header dan badan Content-Type respons dan kemudian kembali, dengan itu memendekkan saluran paip. Jika cache terlepas, hubungi $this->next->call() untuk memanggil lapisan middleware seterusnya. Apabila proses kembali ke titik ini dari panggilan middleware yang lain, status permintaan cepat diperiksa dan data yang relevan di -cache untuk carian masa depan. Kerana kelas ini memanjangkan kelas Slim Middleware, ia boleh mengakses contoh aplikasi Slim melalui $this->app, dengan itu secara tidak langsung mengakses respons dan objek permintaan. Kita boleh mempengaruhi tajuk tindak balas dengan merawatnya sebagai array dan mempengaruhi badan tindak balas melalui kaedah body(). Kaedah fetch() dan save() dilindungi kaedah penolong, mereka hanya membungkus pertanyaan pangkalan data untuk mencari dan berterusan kandungan. Saya termasuk mereka di sini hanya untuk melengkapkan contoh -contoh. Ia mengandaikan bahawa terdapat jadual bernama cache dengan lajur key, content_type dan body. Bergantung pada keperluan anda, mekanisme kegigihan anda mungkin berbeza -beza. Juga, cache tamat tempoh (untuk kesederhanaan) tidak ditunjukkan di sini, walaupun anda boleh menggabungkannya sendiri.

mendaftar dan konfigurasi middleware

Mendaftar middleware menggunakan kaedah add() Slim.

<?php require_once "../vendor/autoload.php";

$app = new SlimSlim();
$app->add(new MyMiddlewareCache($db));

Sudah tentu, pelbagai middleware boleh didaftarkan melalui kaedah panggilan add() berikutnya. Kerana middleware baru akan mengelilingi mana -mana middleware yang ditambah sebelum ini, ini bermakna mereka mesti ditambah dalam urutan yang bertentangan panggilan.

<?php $app = new SlimSlim();
$app->add(new MyMiddlewareCache($db));
$app->add(new MyMiddlewareAuth($db));
// ...

Dalam contoh di atas, Cache middleware membungkus aplikasi Slim, dan kemudian Auth middleware membungkus Cache. Apabila $app->run() dipanggil, proses pelaksanaan akan sama dengan yang ditunjukkan dalam angka di atas, pertama memasuki middleware pengesahan dan kemudian bekerja sepanjang jalan ke laluan. Konfigurasi middleware biasanya dilakukan melalui pembina perkhidmatan. Dalam contoh kami, saya hanya lulus sambungan pangkalan data yang aktif supaya ia dapat mengakses jadual cache, tetapi anda boleh menulis kelas anda untuk menerima apa -apa maklumat yang anda perlukan untuk menyesuaikan tingkah lakunya. Sebagai contoh, komponen boleh ditindih untuk menerima objek pengendali yang mendedahkan fetch() dan save() kaedah ini akan membolehkan kami memadamkan kaedah sampel (atau menggunakannya sebagai penandaan lalai) dan pemaju pengguna akhir akan mengikuti keperluan IT Menyediakan fungsi sebagai sebahagian daripada konfigurasi komponen.

Kesimpulan

Saya mendapati bahawa middleware adalah penyelesaian yang elegan untuk melaksanakan semua aspek aplikasi tipis. Dalam artikel ini, saya menerangkan bagaimana seni bina middleware berfungsi dan apa yang diperlukan untuk melaksanakan middleware anda sendiri. Terdapat repositori tambahan kecil dengan beberapa contoh middleware asas seperti perlindungan CSRF dan pengesahan HTTP. Saya telah refactor contoh di sini dan mengemukakan permintaan tarik, jadi jika anda menulis perkhidmatan middleware yang berguna, mengapa tidak mempertimbangkan menyerahkannya kepada projek anda supaya orang lain dapat mendapat manfaat daripadanya juga?

(gambar dari fotolia)

(berikut adalah FAQ, yang telah diselaraskan dan ditambah mengikut kandungan asal, dan beberapa kandungan pendua telah diselaraskan)

Soalan Lazim Mengenai Slim Middleware

  • Apakah middleware yang tipis dan mengapa penting? Slim middleware adalah alat yang berkuasa dalam kerangka tipis yang membolehkan anda memanipulasi permintaan dan respons HTTP. Adalah penting kerana ia menyediakan cara untuk melaksanakan kod sebelum dan selepas permohonan Slim untuk mengubah suai permintaan masuk atau respons keluar. Ini boleh digunakan untuk pelbagai tujuan seperti pengesahan, caching, atau pembalakan.

  • Bagaimana untuk membuat middleware dalam langsing? Mewujudkan middleware dalam Slim melibatkan menentukan kelas yang melaksanakan . Kelas ini harus mempunyai kaedah yang dipanggil MiddlewareInterface yang menerima process() dan ServerRequestInterface. Kaedah RequestHandlerInterface adalah di mana anda boleh memanipulasi permintaan dan respons. process()

  • Bagaimana untuk menambah middleware ke aplikasi langsing saya? anda boleh menggunakan kaedah untuk menambah middleware ke aplikasi Slim anda. Kaedah ini menerima contoh kelas middleware. Middleware dilaksanakan mengikut urutan tambahan, jadi middleware terakhir ditambah akan menjadi middleware pertama untuk dilaksanakan. add()

  • Bolehkah saya menggunakan middleware untuk laluan tertentu dalam langsing? Ya, middleware boleh digunakan untuk laluan tertentu dalam langsing. Ini dilakukan dengan memanggil kaedah pada objek Route dan bukannya objek App. Ini membolehkan anda mempunyai middleware yang hanya memberi kesan kepada laluan tertentu. add()

  • Apakah perbezaan antara middleware global dan middleware penghalaan? Middleware global digunakan untuk setiap permintaan yang diproses oleh aplikasi Slim, sementara middleware routing digunakan untuk hanya laluan tertentu. Ini membolehkan anda menggunakan middleware yang berbeza untuk bahagian yang berlainan aplikasi anda.

  • Bagaimana menggunakan middleware untuk melakukan pengendalian ralat dalam langsing? Dengan menangkap pengecualian dalam kelas middleware, anda boleh menggunakan middleware untuk melakukan pengendalian ralat dalam Slim. Anda kemudian boleh mengubah suai respons untuk memasukkan mesej ralat, atau mengalihkan pengguna ke halaman ralat.

  • Bolehkah anda mengesahkan pengguna dalam Slim menggunakan middleware? Ya, middleware sering digunakan untuk pengesahan dalam Slim. Ini boleh dilakukan dengan menyemak sesi atau token yang sah di middleware dan mengembalikan tindak balas ralat jika pengguna tidak disahkan.

  • Bagaimana menggunakan middleware untuk log masuk Slim? Dengan menulis maklumat mengenai permintaan dan tindak balas kepada fail log, middleware boleh digunakan untuk pembalakan. Ini sangat berguna untuk menyahpepijat atau memantau permohonan anda.

  • Bolehkah saya menggunakan middleware pihak ketiga dengan Slim? Ya, Slim menyokong middleware pihak ketiga. Ini boleh ditambah ke aplikasi anda seperti middleware anda sendiri. Ini membolehkan anda memanfaatkan middleware sedia ada untuk menyelesaikan tugas -tugas yang sama.

  • Bagaimana untuk menguji middleware langsing saya? Menguji middleware langsing melibatkan membuat permintaan dan tindak balas mengejek dan lulus mereka ke middleware anda. Anda kemudian boleh menegaskan bahawa middleware berkelakuan seperti yang diharapkan, seperti mengubah suai permintaan atau tindak balas, atau membuang pengecualian.

Atas ialah kandungan terperinci PHP Master | Bekerja dengan middleware langsing. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah beberapa amalan terbaik untuk versi API berasaskan PHP? Apakah beberapa amalan terbaik untuk versi API berasaskan PHP? Jun 14, 2025 am 12:27 AM

TOVERSIONAPHP-berasaskan-berasaskan, UseUrl-berasaskan Forversioningforclarityandeaseofrouting, separateVersionedcodetoavoidconflicts, decrecateoldversionswithclearCommunication, andconsidercustomheadershipshenershipshenershipshenershipshenershinlyhenershinlywenershinly

Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Bagaimana saya melaksanakan pengesahan dan kebenaran dalam php? Jun 20, 2025 am 01:03 AM

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Apakah perbezaan antara paradigma pengaturcaraan berorientasikan prosedur dan objek dalam PHP? Apakah perbezaan antara paradigma pengaturcaraan berorientasikan prosedur dan objek dalam PHP? Jun 14, 2025 am 12:25 AM

Proseduralandobject-orientedprogramming (OOP) inphpdiffers significelyinstructure, kebolehgunaan semula, dandatahandling.1.ProceduralProgrammingusesFunctionsaganediediedieds, sesuai, pemodelan

Apakah rujukan yang lemah (lemah) dalam PHP, dan kapan mereka berguna? Apakah rujukan yang lemah (lemah) dalam PHP, dan kapan mereka berguna? Jun 14, 2025 am 12:25 AM

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Bagaimana anda boleh mengendalikan fail memuat naik dengan selamat di php? Jun 19, 2025 am 01:05 AM

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Apakah perbezaan antara == (perbandingan longgar) dan === (perbandingan ketat) dalam php? Jun 19, 2025 am 01:07 AM

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Bagaimanakah anda boleh berinteraksi dengan pangkalan data NoSQL (mis., MongoDB, Redis) dari PHP? Jun 19, 2025 am 01:07 AM

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Bagaimanakah saya melakukan operasi aritmetik dalam php (, -, *, /, %)? Jun 19, 2025 pm 05:13 PM

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.

See all articles