亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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)

Bagaimana menggabungkan dua nilai PHP Arrays yang unik? Bagaimana menggabungkan dua nilai PHP Arrays yang unik? Jul 02, 2025 pm 05:18 PM

Untuk menggabungkan dua susunan PHP dan menyimpan nilai unik, terdapat dua kaedah utama. 1. Untuk tatasusunan indeks atau hanya deduplikasi, gunakan Array_Merge dan Array_unique Combinations: First Gabungan Array_Merge ($ array1, $ array2) dan kemudian gunakan array_unique () untuk deduplikasi mereka untuk akhirnya mendapatkan array baru yang mengandungi semua nilai unik; 2. Untuk array bersekutu dan ingin mengekalkan pasangan nilai utama dalam array pertama, gunakan pengendali: $ hasil = $ array1 $ array2, yang akan memastikan bahawa kunci dalam array pertama tidak akan ditimpa oleh array kedua. Kedua -dua kaedah ini boleh digunakan untuk senario yang berbeza, bergantung kepada sama ada nama kunci dikekalkan atau hanya fokus yang dihadapi

php regex untuk kekuatan kata laluan php regex untuk kekuatan kata laluan Jul 03, 2025 am 10:33 AM

Untuk menentukan kekuatan kata laluan, perlu menggabungkan pemprosesan biasa dan logik. Keperluan asas termasuk: 1. Panjang tidak kurang daripada 8 digit; 2. Sekurang -kurangnya mengandungi huruf kecil, huruf besar, dan nombor; 3. Sekatan watak khas boleh ditambah; Dari segi aspek lanjutan, duplikasi berterusan aksara dan urutan tambahan/penurunan perlu dielakkan, yang memerlukan pengesanan fungsi PHP; Pada masa yang sama, senarai hitam harus diperkenalkan untuk menapis kata laluan lemah yang biasa seperti kata laluan dan 123456; Akhirnya, disyorkan untuk menggabungkan perpustakaan ZXCVBN untuk meningkatkan ketepatan penilaian.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Bagaimana untuk membuat array dalam PHP? Bagaimana untuk membuat array dalam PHP? Jul 02, 2025 pm 05:01 PM

Terdapat dua cara untuk membuat array dalam PHP: Gunakan fungsi array () atau gunakan kurungan []. 1. Menggunakan fungsi array () adalah cara tradisional, dengan keserasian yang baik. Tentukan array indeks seperti $ buah -buahan = array ("epal", "pisang", "oren"), dan array bersekutu seperti $ user = array ("name" => "John", "umur" => 25); 2. Menggunakan [] adalah cara yang lebih mudah untuk menyokong sejak Php5.4, seperti warna $

See all articles