Jadual Kandungan
Apakah perbezaan utama antara Drupal 7 dan Drupal 8?
Drupal 8 Bagaimana menangani permintaan dan respons?
Apakah peranan sistem penghalaan di Drupal 8?
Bagaimana sistem tema Drupal 8 berfungsi?
bagaimana saya membangunkan modul tersuai di Drupal 8?
Apakah faedah menggunakan Drupal 8 untuk pembangunan web?
Drupal 8 Bagaimana menangani interaksi pangkalan data?
Apakah peranan penjadual acara di Drupal 8?
Drupal 8 Bagaimana Menangani Cache?
bagaimana saya memperluaskan fungsi Drupal 8?
Rumah pembangunan bahagian belakang tutorial php Dari Permintaan ke Respons: Perjalanan ke Drupal 8 Internal

Dari Permintaan ke Respons: Perjalanan ke Drupal 8 Internal

Feb 17, 2025 am 11:11 AM

kedalaman ke Drupal 8 (dan Symfony2): Proses permintaan-ke-tindak balas

mata teras

  • Drupal 8 menggunakan komponen Httpkernel dan Httpfoundation Symfony2 untuk memproses permintaan dan respons pengguna, merangkumi permintaan dengan cara yang berorientasikan objek, menyampaikannya kepada permohonan, dan mengembalikan respons.
  • Komponen httpkernel adalah teras mana-mana aplikasi berasaskan simfoni yang memulakan proses dalam fail index.php dan menggunakan proses yang didorong oleh peristiwa. Ini menjadikan aplikasi lebih fleksibel dan tugas dapat diwakilkan kepada pendengar untuk peristiwa -peristiwa ini.
  • Jika pengawal tidak mengembalikan objek tindak balas, kernel mencetuskan peristiwa kernel.view, dan pelanggan bertanggungjawab untuk menukar hasil pengawal ke dalam objek tindak balas sebenar. Fleksibiliti ini membolehkan pengawal untuk mengembalikan apa -apa jenis objek selagi ia digabungkan dengan pelanggan Acara View yang menukarkan objek ke respons yang betul.
Dalam artikel pertama mengenai pembangunan modul Drupal 8, kami belajar sedikit tentang aspek penghalaan proses ini. Kami telah melihat bahawa membuat halaman dengan laluan kini hanya menjadi masalah mengisytiharkan laluan yang sepadan dengan pengawal. Seperti yang dapat kita lihat, yang terakhir boleh mengembalikan array yang diberikan yang ditafsirkan sebagai penanda dan dipaparkan di kawasan kandungan utama halaman tersebut. Tetapi adakah anda tahu bahawa di sebalik tabir, Drupal sebenarnya menukarkan array itu ke objek

objek mengikut peraturan HttpkernelInterface Symfony?

From Request to Response: A Journey into Drupal 8 Internals Dalam artikel ini, saya ingin memberi kita lebih mendalam pada struktur dalaman Drupal 8 (dan Symfony2) dan memahami apa yang sebenarnya berlaku (dan apa yang mungkin berlaku) antara saat pengguna membuat permintaan pada masa yang mereka lihat tindak balas mereka kembali). Contoh -contoh yang saya nyatakan di atas hanya satu arah di mana proses ini boleh pergi, dan hari ini kita akan melihat kemungkinan lain. Matlamatnya adalah untuk memahami fleksibiliti sistem, yang seterusnya dapat membantu kami membina aplikasi yang hebat.

Sebelum menyelidiki lebih mendalam, saya sangat mengesyorkan anda menyemak carta ini, yang melakukan tugas yang baik untuk mensintesis apa yang sering dipanggil

rendering pipeline

. Walaupun ia seolah -olah saya mewakili lebih daripada nama yang dicadangkan, kerana sistem rendering hanya sebahagian daripada gambar, walaupun sebahagian besar.

Pengawal depan (index.php)

Symfony2 kini merupakan bahagian penting dari Drupal. Yang terakhir menggunakan banyak komponen simfoni, komponen yang paling penting untuk artikel ini adalah komponen httpkernel dan httpfoundation. Bersama-sama, mereka bertanggungjawab untuk merangkum permintaan pengguna, menyampaikannya ke aplikasi, dan kemudian mengembalikan kandungan yang dikembalikan kepada pengguna dengan cara yang konsisten dan berorientasikan objek.

HttpKernelInterface (anda mungkin pernah mendengarnya dari konteks lain juga) melekatkan semua ini bersama -sama dengan menerima objek

objek dan sentiasa mengembalikan objek objek. Konsep yang sangat mudah tetapi berkuasa.

Proses ini bermula di dalam fail index.php, yang mula -mula menjana objek permintaan dan lulus ke kaedah httpkernel :: handle (). Yang terakhir kemudiannya bertanggungjawab untuk mengembalikan objek tindak balas. Pada tahap yang tinggi, ini berlaku dalam aplikasi Drupal dan aplikasi Symfony (atau sebarang aplikasi lain yang menggunakan komponen Httpkernel).

httpkernel dan peristiwa

Httpkernel adalah teras mana-mana aplikasi berasaskan simfoni. Seperti yang dapat kita lihat, kaedah pemegangnya () mempunyai banyak tanggungjawab dalam menyediakan respons, dan ia melakukan ini dengan proses yang didorong oleh peristiwa. Ini menjadikan aplikasi sangat fleksibel, dan kerja berat sentiasa diwakilkan kepada pendengar peristiwa -peristiwa ini.

Jika anda melihat carta sebelumnya, anda dapat melihat bahawa alur kerja ini diterangkan dalam lajur kedua, yang pada dasarnya mewakili pelekat dari segi Symfony dan Drupal.

Ia bermula dengan acara pertama yang dipanggil kernel.request. Pelanggan acara ini mengendalikan pelbagai tugas. Tetapi di Drupal 8, dua tugas yang sangat penting adalah rundingan format dan penghalaan. Yang pertama menentukan jenis tindak balas yang perlu dikembalikan (html, json, imej, pdf, dll.), Dan yang kedua menentukan kod yang bertanggungjawab untuk memproses respons ini (kunci _controller yang ditakrifkan oleh laluan dalam fail routing.yml ). Walau bagaimanapun, seperti kebanyakan langkah dalam aliran kerja acara ini, jika pendengar mengembalikan objek tindak balas, proses melangkaui langkah -langkah berikutnya (hentikan penyebaran) dan pergi terus ke kernel.response.

Acara kedua ialah Kernel.Controller, yang dipanggil selepas permohonan mengetahui pengawal mana yang bertanggungjawab untuk memproses permintaan. Pada ketika ini, pendengar masih boleh melakukan beberapa operasi utama di atasnya. Segera mengikuti langkah ini, kernel bertanggungjawab untuk menghuraikan parameter yang diluluskan kepada pengawal. Satu operasi sedemikian di Drupal adalah untuk memuatkan objek berdasarkan ID yang terdapat dalam permintaan (seperti nod) dan memberikan objek ini secara langsung kepada pengawal. Pengawal kemudiannya akan dipanggil dengan parameter yang sepadan.

Pengawal bertanggungjawab untuk mengembalikan respons sejenis. Jika ia mengembalikan objek tindak balas, proses melompat ke acara kernel.Response. Pendengar yang terakhir boleh melakukan pengubahsuaian minit terakhir ke objek, seperti mengubah suai tajuk atau kandungan itu sendiri. Dan selepas mendapatkannya dari kaedah pemegang (), pengawal front-end menghantarnya kembali kepada pengguna menggunakan kaedah Send () pada objek tindak balas dan menamatkan proses.

pemahaman yang lebih mendalam mengenai array yang diberikan

Jika pengawal tidak mengembalikan objek tindak balas, kernel mencetuskan peristiwa terakhir: kernel.view. Pelanggannya bertanggungjawab untuk menukar hasil pengawal ke dalam objek tindak balas sebenar. Oleh itu, ini bermakna anda boleh mengembalikan sebarang jenis objek dari pengawal, selagi anda menggabungkannya dengan pelanggan Acara View yang menukarkan objek itu kepada tindak balas yang betul.

Walau bagaimanapun, seperti yang kita lihat dalam contoh, pengawal mengembalikan array yang diberikan kebanyakan masa. Ini biasanya mewakili kandungan utama halaman (sama dengan panggilan balik halaman di Drupal 7).

Untuk mengendalikan ini, Drupal 8 mempunyai MainContentViewSubscriber yang bertanggungjawab untuk menukar array ini ke objek tindak balas yang betul. Ia melakukan ini dengan menggunakan MainContentRenderer tertentu yang dipilih dalam fasa rundingan format yang dibincangkan sebelumnya. Walaupun sesetengah penghadaman ini sudah tersedia, penghantar lalai yang digunakan adalah htmlrenderer.

Oleh kerana ini adalah jenis penghuni kandungan utama yang paling biasa digunakan, mari kita lihat dengan lebih dekat bagaimana ia membina halaman. Perkara yang sejuk dalam proses ini ialah konsep variasi halaman. Ini bermakna bahawa htmlrenderer menghantar satu peristiwa yang bertanggungjawab untuk mengetahui jenis halaman yang hendak digunakan untuk membungkus array rendering kandungan utama: RenderEvents :: select_page_display_variant. Secara lalai, SimplePageVariant digunakan melainkan modul blok diaktifkan. Dalam kes ini, BlockPageVariant akan bermula dan membolehkan blok diletakkan di kawasan sekitar kandungan utama. Jika anda mahu, anda boleh melanggan acara ini dalam modul anda sendiri dan memberikan variasi anda sendiri.

Semua ini berlaku dalam kaedah menyediakan () htmlrenderer, yang menyediakan #Type = & gt; Dua yang terakhir dibungkus dalam #Type = & gt; Rentetan HTML yang dihasilkan ditambah ke objek tindak balas dan dikembalikan ke pengawal hadapan.

Walaupun ini adalah gambaran keseluruhan tahap proses yang sangat tinggi, ini pada dasarnya adalah apa yang berlaku. Sekarang kita mempunyai objek respons, yang bermaksud kernel boleh menghantar acara kernel. Selepas itu, pengawal hadapan boleh menghantar respons terus kembali kepada pengguna dan menamatkan proses.

Kesimpulan

Dalam artikel ini, kami meneroka secara dalaman Drupal 8 (dan Symfony2) dengan menjejaki tindak balas dari permintaan pengguna ke pulangan pelayan. Kami telah melihat bagaimana Drupal 8 mengambil kesempatan daripada komponen Httpkernel dan Httpfoundation Symfony2, dan bagaimana ia pada dasarnya duduk di atas komponen tersebut. Di samping itu, kita melihat bagaimana pelekat di antara mereka terdiri daripada peristiwa yang dihantar oleh kernel, yang Drupal melanggan semua ciri -cirinya. Akhirnya, kita telah melihat bagaimana untuk membina dan mengembalikan halaman HTML kepada pengguna dengan bantuan saluran paip rendering.

Saya percaya bahawa pemahaman apa yang berlaku di belakang tabir dalam aplikasi Drupal 8 akan membolehkan anda membuat aplikasi yang hebat dengan mengetahui dengan tepat di mana untuk mendapatkan proses ini. Saya percaya bahawa jika anda hanya mengambil satu perkara dari artikel ini, ia harus menjadi perkataan fleksibiliti . Kerana fleksibiliti untuk membina apa yang kita perlukan di Drupal 8 adalah jauh lebih daripada apa -apa di Drupal 7. Ia sememangnya menjadi moden.

FAQs Mengenai Struktur Dalaman Drupal 8 (Soalan Lazim)

Apakah perbezaan utama antara Drupal 7 dan Drupal 8?

Drupal 8 memperkenalkan beberapa perubahan besar berbanding Drupal 7. Ia mempunyai enjin tema baru yang dipanggil Twig, yang lebih selamat dan lebih fleksibel. Drupal 8 juga lebih mesra mudah alih dan termasuk lebih banyak bidang terbina dalam. Ia lebih baik menyokong tapak berbilang bahasa dengan pengurusan bahasa dan sokongan terjemahan yang lebih baik. Di samping itu, Drupal 8 mengintegrasikan lebih baik dengan platform pihak ketiga kerana penggunaan komponen simfoni yang meluas.

Drupal 8 Bagaimana menangani permintaan dan respons?

Drupal 8 Gunakan komponen Symfony Httpkernel untuk mengendalikan permintaan dan tindak balas. Apabila permintaan dibuat, Drupal 8 membuat objek permintaan dan lulus ke Httpkernel. Httpkernel kemudian menggunakan sistem penghalaan untuk menentukan pengawal mana yang harus memproses permintaan tersebut. Pengawal memproses permintaan dan mengembalikan objek tindak balas, yang httpkernel menghantar kembali kepada pelanggan.

Apakah peranan sistem penghalaan di Drupal 8?

Sistem penghalaan di Drupal 8 bertanggungjawab untuk memetakan URL ke pengawal tertentu. Ia menggunakan definisi penghalaan yang disediakan oleh modul untuk menentukan pengawal mana yang harus mengendalikan permintaan yang diberikan. Sistem penghalaan juga menyokong penghalaan dinamik, yang boleh diubah mengikut keadaan sistem.

Bagaimana sistem tema Drupal 8 berfungsi?

sistem tema Drupal 8 menggunakan Twig, enjin templat yang fleksibel dan selamat. Topik dalam Drupal 8 terdiri daripada fail .info.yml (menyediakan metadata mengenai topik) dan fail templat ranting (menentukan output HTML). Sistem tema juga menyokong warisan templat, membolehkan tema untuk melanjutkan dan menimpa templat dari tema atau modul lain.

bagaimana saya membangunkan modul tersuai di Drupal 8?

Membangunkan modul tersuai di Drupal 8 termasuk membuat fail .info.yml untuk menyediakan metadata mengenai modul, dan fail .modul untuk mengandungi kod PHP modul. Modul ini juga boleh mengandungi fail lain, seperti fail penghalaan yang menentukan laluan dan fail perkhidmatan yang menentukan perkhidmatan. Drupal 8 menggunakan pengaturcaraan berorientasikan objek dan komponen simfoni untuk membuat kod yang boleh diguna semula dan boleh diuji lebih mudah.

Apakah faedah menggunakan Drupal 8 untuk pembangunan web?

Drupal 8 menyediakan banyak manfaat untuk pembangunan web. Ia menggunakan komponen Symfony untuk menjadikannya lebih kuat dan fleksibel. Ia menyokong reka bentuk responsif dari kotak, menjadikannya lebih mudah untuk membuat laman web mesra mudah alih. Drupal 8 juga meningkatkan sokongan berbilang bahasa, keupayaan SEO yang lebih baik dan antara muka pengurusan yang lebih mesra pengguna.

Drupal 8 Bagaimana menangani interaksi pangkalan data?

Drupal 8 menggunakan API pangkalan data untuk mengendalikan interaksi pangkalan data. API pangkalan data menyediakan lapisan abstraksi di atas SQL, yang membolehkan pemaju menulis pertanyaan pangkalan data tanpa perlu memahami butiran enjin pangkalan data yang mendasari. Ia juga menyokong pertanyaan dinamik, transaksi dan pengurusan skema.

Apakah peranan penjadual acara di Drupal 8?

penjadual acara di Drupal 8 digunakan untuk menguruskan acara dan pendengar acara. Apabila peristiwa berlaku, penjadual acara memberitahu semua pendengar berdaftar, yang kemudiannya boleh mengambil tindakan. Ini membolehkan modul berinteraksi antara satu sama lain dengan cara yang dipadamkan.

Drupal 8 Bagaimana Menangani Cache?

Drupal 8 mempunyai sistem cache kompleks yang membantu meningkatkan prestasi. Ia menyokong pelbagai backends cache, termasuk pangkalan data, fail dan backend berasaskan memori. Drupal 8 juga mempunyai sistem penandaan cache yang membolehkan kegagalan halus data cache.

bagaimana saya memperluaskan fungsi Drupal 8?

Fungsi Drupal 8 boleh dilanjutkan melalui modul dan tema. Modul menambah ciri -ciri baru atau mengubah suai ciri sedia ada, sementara tema mengawal rupa dan nuansa laman web ini. Drupal 8 juga menyokong pemalam yang membolehkan pertukaran ciri, serta perkhidmatan, dan menyediakan ciri-ciri yang boleh diguna semula yang boleh disuntik ke bahagian lain sistem.

Output yang disemak semula ini mengekalkan makna asal semasa menyusun semula ayat dan perenggan, mengelakkan penyalinan langsung.

Atas ialah kandungan terperinci Dari Permintaan ke Respons: Perjalanan ke Drupal 8 Internal. 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

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.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Topik panas

Tutorial Java
1672
14
Tutorial PHP
1277
29
Tutorial C#
1257
24
Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Terangkan hashing kata laluan yang selamat di PHP (mis., Password_hash, password_verify). Mengapa tidak menggunakan MD5 atau SHA1? Apr 17, 2025 am 12:06 AM

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Bagaimanakah jenis membayangkan jenis PHP, termasuk jenis skalar, jenis pulangan, jenis kesatuan, dan jenis yang boleh dibatalkan? Apr 17, 2025 am 12:25 AM

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO) Bagaimana anda menghalang suntikan SQL di PHP? (Penyataan yang disediakan, PDO) Apr 15, 2025 am 12:15 AM

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP: Pengendalian pangkalan data dan logik sisi pelayan PHP: Pengendalian pangkalan data dan logik sisi pelayan Apr 15, 2025 am 12:15 AM

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

Tujuan PHP: Membina Laman Web Dinamik Tujuan PHP: Membina Laman Web Dinamik Apr 15, 2025 am 12:18 AM

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

See all articles