cari
Rumahpembangunan bahagian belakangtutorial phpDari Permintaan ke Respons: Perjalanan ke Drupal 8 Internal

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
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
Di luar gembar -gembur: Menilai peranan PHP hari iniDi luar gembar -gembur: Menilai peranan PHP hari iniApr 12, 2025 am 12:17 AM

PHP kekal sebagai alat yang kuat dan digunakan secara meluas dalam pengaturcaraan moden, terutamanya dalam bidang pembangunan web. 1) PHP mudah digunakan dan diintegrasikan dengan lancar dengan pangkalan data, dan merupakan pilihan pertama bagi banyak pemaju. 2) Ia menyokong penjanaan kandungan dinamik dan pengaturcaraan berorientasikan objek, sesuai untuk membuat dan mengekalkan laman web dengan cepat. 3) Prestasi PHP dapat ditingkatkan dengan caching dan mengoptimumkan pertanyaan pangkalan data, dan komuniti yang luas dan ekosistem yang kaya menjadikannya masih penting dalam timbunan teknologi hari ini.

Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apr 12, 2025 am 12:13 AM

Dalam PHP, rujukan lemah dilaksanakan melalui kelas lemah dan tidak akan menghalang pemungut sampah daripada menebus objek. Rujukan lemah sesuai untuk senario seperti sistem caching dan pendengar acara. Harus diingat bahawa ia tidak dapat menjamin kelangsungan hidup objek dan pengumpulan sampah mungkin ditangguhkan.

Terangkan kaedah sihir __invoke dalam PHP.Terangkan kaedah sihir __invoke dalam PHP.Apr 12, 2025 am 12:07 AM

Kaedah \ _ \ _ membolehkan objek dipanggil seperti fungsi. 1. Tentukan kaedah \ _ \ _ supaya objek boleh dipanggil. 2. Apabila menggunakan sintaks $ OBJ (...), PHP akan melaksanakan kaedah \ _ \ _ invoke. 3. Sesuai untuk senario seperti pembalakan dan kalkulator, meningkatkan fleksibiliti kod dan kebolehbacaan.

Terangkan serat dalam Php 8.1 untuk keserasian.Terangkan serat dalam Php 8.1 untuk keserasian.Apr 12, 2025 am 12:05 AM

Serat diperkenalkan dalam Php8.1, meningkatkan keupayaan pemprosesan serentak. 1) Serat adalah model konkurensi ringan yang serupa dengan coroutine. 2) Mereka membenarkan pemaju mengawal aliran pelaksanaan tugas secara manual dan sesuai untuk mengendalikan tugas I/O-intensif. 3) Menggunakan serat boleh menulis kod yang lebih cekap dan responsif.

Komuniti PHP: Sumber, Sokongan, dan PembangunanKomuniti PHP: Sumber, Sokongan, dan PembangunanApr 12, 2025 am 12:04 AM

Komuniti PHP menyediakan sumber dan sokongan yang kaya untuk membantu pemaju berkembang. 1) Sumber termasuk dokumentasi rasmi, tutorial, blog dan projek sumber terbuka seperti Laravel dan Symfony. 2) Sokongan boleh didapati melalui saluran StackOverflow, Reddit dan Slack. 3) Trend pembangunan boleh dipelajari dengan mengikuti RFC. 4) Integrasi ke dalam masyarakat dapat dicapai melalui penyertaan aktif, sumbangan kepada kod dan perkongsian pembelajaran.

PHP vs Python: Memahami PerbezaanPHP vs Python: Memahami PerbezaanApr 11, 2025 am 12:15 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP: Adakah ia mati atau hanya menyesuaikan diri?PHP: Adakah ia mati atau hanya menyesuaikan diri?Apr 11, 2025 am 12:13 AM

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa Depan PHP: Adaptasi dan InovasiMasa Depan PHP: Adaptasi dan InovasiApr 11, 2025 am 12:01 AM

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

See all articles

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.