


Modul Drupal 8 - Pengurusan Konfigurasi dan Bekas Perkhidmatan
mata teras
Kelas- Drupal 8
- menyediakan fungsi tambahan untuk berinteraksi dengan sistem konfigurasi, yang membolehkan alat untuk menukar borang ke nilai yang disimpan. Ini boleh dilakukan dengan menggantikan kelas lanjutan dengan
ConfigFormBase
dan membuat perubahan yang diperlukan dalam bentuk. Konfigurasi dalam Drupal 8 disimpan dalam fail YAML dan boleh diubah melalui UI untuk digunakan di laman web yang berbeza.ConfigFormBase
Bekas perkhidmatan di Drupal 8 membolehkan penciptaan perkhidmatan, iaitu kelas PHP yang melakukan operasi global, dan mendaftarkannya ke dalam bekas perkhidmatan untuk akses. Suntikan ketergantungan digunakan untuk lulus objek ke objek lain, memastikan decoupling. Anda boleh mendaftarkan perkhidmatan dengan membuat fail - dalam direktori root modul.
demo.services.yml
Suntikan ketergantungan di Drupal 8 adalah corak reka bentuk yang membolehkan satu objek memberikan kebergantungan untuk yang lain, menjadikan kod lebih modular dan lebih mudah untuk diuji. Ini boleh dicapai dengan memperluaskan kelas - atau melaksanakan
ControllerBase
. Anda juga boleh menggunakan kelasContainerInjectionInterface
untuk mengakses perkhidmatan di seluruh dunia.Drupal
Perhatikan bahawa sesetengah bahagian kod mungkin ketinggalan zaman kerana Drupal 8 sedang dalam pembangunan pada masa penulisan. Sila lihat repositori ini, saya cuba mengemas kini kod sampel dan menjadikannya serasi dengan versi Drupal 8 terkini.
Dalam artikel sebelumnya mengenai pembangunan modul Drupal 8, kami melihat membuat jenis dan bentuk blok. Kami telah melihat bahawa blok kini boleh diguna semula, dan segala yang diperlukan untuk menentukan jenis blok dilakukan dalam satu kelas. Begitu juga, fungsi penjanaan bentuk juga dikelompokkan dalam kelas di mana tugas -tugas yang dilakukan oleh kaedah tertentu adalah serupa dengan yang kita gunakan di Drupal 7.Dalam tutorial ini, saya akan meneruskan dari mana kita berakhir kali terakhir. Saya akan menerangkan cara menukar
kami ke dalam bentuk yang digunakan untuk menyimpan nilai melalui sistem konfigurasi Drupal 8. Selepas itu, kami akan menggambarkan bekas perkhidmatan dan suntikan ketergantungan dengan contoh. DemoForm
Borang konfigurasi
Apabila kita mula -mula ditakrifkan, kita memperluaskan kelas DemoForm
, yang merupakan pelaksanaan yang paling mudah FormBase
. Walau bagaimanapun, Drupal 8 juga dilengkapi dengan FormInterface
, yang menyediakan beberapa ciri tambahan yang membuat berinteraksi dengan sistem konfigurasi sangat mudah. ConfigFormBase
ke dalam bentuk yang menyimpan alamat e -mel yang dimasukkan oleh pengguna. Perkara pertama yang perlu kita lakukan ialah menggantikan kelas lanjutan dengan DemoForm
(dan tentu saja ConfigFormBase
itu): use
use Drupal\Core\Form\ConfigFormBase; class DemoForm extends ConfigFormBase {
Sebelum kita terus mengubah borang yang lain, mari kita lihat bagaimana konfigurasi mudah dalam kerja Drupal 8. Saya berkata "mudah" kerana terdapat entiti konfigurasi yang lebih kompleks, yang tidak akan kami perkenalkan hari ini. Buat masa ini, konfigurasi yang disediakan oleh modul (teras atau sumbangan) disimpan dalam fail YAML. Apabila modul diaktifkan, data ini diimport ke dalam pangkalan data (untuk meningkatkan prestasi apabila digunakan). Dengan UI, kita boleh mengubah konfigurasi ini dan kemudian dengan mudah mengeksportnya ke fail YAML untuk digunakan di laman web yang berbeza.
Modul boleh memberikan konfigurasi lalai dalam fail YAML dalam folder config/install
dalam direktori akar modul. Konvensyen penamaan untuk fail ini adalah untuk awalan nama modul. Oleh itu, mari buat fail yang dipanggil demo.settings.yml
. Dalam fail ini, mari tampal yang berikut:
demo: email_address: demo@demo.com
Ini adalah struktur bersarang (seperti array bersekutu dalam PHP). Di bawah kekunci demo
, kami mempunyai pasangan nilai kunci yang lain. Biasanya, untuk mengakses nilai bersarang ini, kami menggunakan titik (.). Dalam kes kami, ia adalah demo.email_address
.
Sebaik sahaja kami mempunyai fail ini, satu perkara penting yang perlu anda ingat ialah fail ini akan diimport hanya apabila modul dipasang. Jadi, teruskan memasang semula. Sekarang kita boleh kembali ke bentuk kita dan melihat satu demi satu kaedah yang perlu diselaraskan.
inilah kaedah buildForm()
sekarang kelihatan seperti:
public function buildForm(array $form, array &$form_state) { $form = parent::buildForm($form, $form_state); $config = $this->config('demo.settings'); $form['email'] = array( '#type' => 'email', '#title' => $this->t('Your .com email address.'), '#default_value' => $config->get('demo.email_address') ); return $form; }
Pertama, bertentangan dengan FormBase
, kelas ConfigFormBase
juga melaksanakan kaedah ini untuk menambah elemen ke array bentuk (butang hantar). Jadi, sebelum menambah unsur -unsur kita sendiri, kita boleh menggunakan apa yang kita lakukan sebelum kelas induk.
Sekarang untuk bahagian konfigurasi. Drupal 8 menyediakan objek Config
yang boleh kita gunakan untuk berinteraksi dengan konfigurasi. Sesetengah kelas telah memperolehnya melalui suntikan pergantungan. ConfigFormBase
Ini adalah kelas seperti itu.
seperti yang anda lihat, kami menggunakan kaedah config()
kelas induk untuk mengambil objek Config
yang telah dihuni dengan konfigurasi mudah demo.settings
kami. Kemudian, untuk #default_value
elemen borang e -mel, kami menggunakan kaedah Config
objek get()
untuk mendapatkan nilai alamat e -mel.
Seterusnya kita hanya perlu menukar pengendali komit, kerana kaedah validateForm()
kini boleh tetap sama:
public function submitForm(array &$form, array &$form_state) { $config = $this->config('demo.settings'); $config->set('demo.email_address', $form_state['values']['email']); $config->save(); return parent::submitForm($form, $form_state); }
Dalam kaedah ini, kita mula -mula mengambil objek Config
yang kita konfigurasi (seperti yang kita lakukan sebelum ini). Kami kemudian menggunakan kaedah set()
untuk menukar nilai email_address
ke nilai yang dikemukakan pengguna. Kemudian kami menggunakan kaedah save()
untuk menyimpan konfigurasi. Akhirnya, kami melanjutkan pengendali komitmen induk kerana ia termasuk beberapa fungsi (dalam kes ini ia menetapkan mesej Drupal ke skrin).
itu sahaja. Anda boleh membersihkan cache dan mencubanya. Dengan menghantar alamat e -mel baru, anda menyimpannya dalam konfigurasi. Fail demo.settings.yml
pastinya tidak akan berubah, tetapi anda boleh mengeksport konfigurasi demo.settings
dan mengimportnya ke laman web lain.
Container Service dan Suntikan Ketergantungan
Perkara seterusnya yang ingin kita lihat ialah bekas perkhidmatan. Falsafah di sebalik perkhidmatan ini adalah untuk memecah fungsi ke dalam komponen yang boleh diguna semula. Oleh itu, perkhidmatan adalah kelas PHP yang melakukan beberapa operasi global dan mendaftar kepada bekas perkhidmatan untuk akses.
Suntikan ketergantungan adalah cara kita lulus objek untuk memastikan decoupling. Setiap perkhidmatan perlu mengendalikan satu perkara, dan jika memerlukan perkhidmatan lain, yang terakhir boleh disuntik ke dalam bekas. Tetapi kita akan melihat bagaimana untuk melakukannya dengan segera.
Seterusnya, kami akan membuat perkhidmatan yang sangat mudah dan mendaftarkannya ke dalam bekas. Ia hanya mempunyai satu cara sebenar untuk mengembalikan nilai mudah. Kami kemudian menyuntik perkhidmatan sebagai kebergantungan ke dalam DemoController
dan menggunakan nilai yang disediakan oleh Perkhidmatan.
Untuk mendaftarkan perkhidmatan, kita perlu membuat fail demo.services.yml
yang terletak di direktori root modul, dengan kandungan berikut:
use Drupal\Core\Form\ConfigFormBase; class DemoForm extends ConfigFormBase {
Konvensyen penamaan fail adalah module_name.services.yml
.
Baris pertama mewujudkan pelbagai perkhidmatan. Baris kedua mentakrifkan perkhidmatan pertama (dipanggil demo_service
, yang diawali oleh nama modul). Baris ketiga menentukan kelas yang akan diterapkan untuk perkhidmatan ini. Seterusnya adalah untuk membuat fail kelas src/
dalam folder DemoService.php
modul kami. Inilah perkhidmatan saya (sebenarnya tidak ada, hanya untuk menggambarkan cara menggunakannya):
demo: email_address: demo@demo.com
Tidak ada yang perlu dijelaskan di sini, kerana ia sangat asas. Seterusnya, mari kita beralih ke DemoController
kami dan gunakan perkhidmatan ini. Kita boleh melakukan ini dalam dua cara: mengakses bekas di seluruh dunia melalui kelas Drupal
atau lulus objek kelas ini kepada pengawal kami menggunakan suntikan ketergantungan. Amalan terbaik mencadangkan kita harus mengambil pendekatan kedua, jadi itulah yang akan kita lakukan. Tetapi kadang -kadang anda memerlukan akses global ke perkhidmatan ini. Untuk melakukan ini, anda boleh melakukan perkara berikut:
public function buildForm(array $form, array &$form_state) { $form = parent::buildForm($form, $form_state); $config = $this->config('demo.settings'); $form['email'] = array( '#type' => 'email', '#title' => $this->t('Your .com email address.'), '#default_value' => $config->get('demo.email_address') ); return $form; }
sekarang $service
adalah objek kelas DemoService
yang baru saja kita buat. Tetapi mari kita lihat bagaimana untuk menyuntik perkhidmatan kami sebagai kebergantungan dalam kelas DemoController
. Saya akan menerangkan apa yang perlu dilakukan terlebih dahulu, dan kemudian anda akan melihat pengawal lengkap dengan semua perubahan yang dibuat kepadanya.
Pertama, kita perlu mengakses bekas perkhidmatan. Ini sangat mudah untuk pengawal. Kita boleh melanjutkan kelas ControllerBase
, yang memberikan kita ini sebagai tambahan kepada beberapa program penolong lain. Sebagai alternatif, pengawal kami boleh melaksanakan ContainerInjectionInterface
, yang juga membolehkan kami mengakses bekas. Tetapi kita akan berpegang pada ControllerBase
, jadi kita perlukan use
kelas.
Seterusnya, kita perlukan use
Symfony 2 ContainerInterface
sebagai keperluan kaedah create()
, yang meniru objek lain pengawal dan melepasi perkhidmatan yang kita mahu.
Akhirnya, kita akan memerlukan pembina untuk mendapatkan objek perkhidmatan yang diluluskan (objek yang dikembalikan create()
) dan memberikannya kepada sifat untuk kegunaan kemudian. create()
urutan di mana kaedah mengembalikan objek perlu mencerminkan perintah di mana ia diserahkan kepada pembina.
jadi mari kita lihat di Modified kami DemoController
:
use Drupal\Core\Form\ConfigFormBase; class DemoForm extends ConfigFormBase {
Seperti yang anda lihat, semua langkah ada di sini. Kaedah create()
mencipta contoh baru kelas pengawal kami dan meluluskan perkhidmatan yang diambil dari bekas kepadanya. Akhirnya, satu contoh kelas DemoService
disimpan dalam harta $demoService
, yang boleh kita gunakan untuk memanggil kaedah getDemoValue()
. Nilai ini kemudiannya akan digunakan dalam mesej "Hello". Kosongkan cache dan cubalah. Pergi ke jalan demo/
dan anda harus melihat "Hello Upchuk!"
Saya percaya anda dapat melihat kuasa kontena perkhidmatan, kerana kita sekarang boleh menulis fungsi yang dipisahkan dan lulus mereka di mana diperlukan. Saya tidak menunjukkan kepada anda bagaimana untuk melakukannya, tetapi anda boleh mengisytiharkan kebergantungan semasa mendaftar untuk perkhidmatan. Ini bermakna apabila Drupal menafikan objek perkhidmatan, ia akan berbuat demikian untuk semua kebergantungannya, dan menyerahkannya kepada pembina. Anda boleh membaca lebih lanjut mengenai cara melakukan ini di halaman dokumen ini.
Kesimpulan
Dalam artikel ini, kami telah melihat banyak perkara yang sejuk. Kami telah melihat bagaimana sistem konfigurasi menguruskan konfigurasi mudah dan ciri -ciri "bentuk" yang disediakan untuk ini. Saya menggalakkan anda untuk meneroka bagaimana ConfigFormBase
dilaksanakan dan ciri -ciri apa yang tersedia semasa memperluaskannya. Di samping itu, anda harus berlatih menggunakan konfigurasi import/eksport antara tapak di UI. Mulai sekarang, ini akan menjadi peningkatan besar kepada proses penempatan.
Kami kemudian melihat perkhidmatan, apa yang mereka ada, dan bagaimana mereka bekerja. Cara terbaik untuk mengekalkan blok fungsi yang boleh diguna semula dan dipadamkan yang boleh diakses dari mana -mana sahaja. Saya harap konsep suntikan ketergantungan tidak lagi menakutkan (jika ia untuk anda). Ia pada dasarnya sama seperti parameter lulus ke fungsi prosedur, tetapi dilakukan di belakang tabir oleh Symfony dan bekas perkhidmatannya yang kuat menggunakan kaedah pembina (atau setter).
Soalan Lazim mengenai Bangunan Drupal 8 Modul: Pengurusan Konfigurasi dan Bekas Perkhidmatan
Apakah peranan bekas perkhidmatan di Drupal 8?
Bekas perkhidmatan di Drupal 8 adalah komponen utama yang menguruskan penciptaan perkhidmatan, objek yang digunakan secara global dalam aplikasi Drupal. Ia memastikan bahawa setiap perkhidmatan hanya instantiated sekali, menjimatkan memori dan meningkatkan prestasi. Bekas perkhidmatan juga mengendalikan suntikan ketergantungan, corak reka bentuk yang membolehkan satu objek memberikan kebergantungan untuk objek lain. Ini menjadikan kod lebih modular, lebih mudah untuk menguji dan menggalakkan organisasi yang lebih baik.
bagaimana untuk menentukan perkhidmatan baru di Drupal 8?
Untuk menentukan perkhidmatan baru di Drupal 8, anda perlu membuat fail services.yml
dalam direktori root modul. Fail ini harus mengandungi nama, kelas, dan parameter perkhidmatan. Kelas ini mestilah nama kelas yang berkelayakan yang melaksanakan perkhidmatan tersebut, dan parameter harus menjadi perkhidmatan atau parameter di mana perkhidmatan itu bergantung.
Apakah tujuan pengurusan konfigurasi di Drupal 8?
Pengurusan Konfigurasi di Drupal 8 adalah sistem yang membolehkan anda menguruskan data konfigurasi tapak secara konsisten. Ia membolehkan anda mengimport, mengeksport, dan menyegerakkan data konfigurasi, yang berguna apabila memindahkan perubahan konfigurasi dari persekitaran pembangunan ke tapak pengeluaran. Ia juga menyediakan cara untuk mengesan dan menguruskan perubahan konfigurasi tapak dari masa ke masa.
Bagaimana untuk mengeksport dan mengimport data konfigurasi menggunakan sistem pengurusan konfigurasi?
Untuk mengeksport data konfigurasi di Drupal 8, anda boleh menggunakan antara muka Pengurusan Konfigurasi di panel admin atau menggunakan arahan Drush. Data yang dieksport akan berada dalam format YAML dan boleh dibaca dan diedit dengan mudah. Untuk mengimport data konfigurasi, anda boleh memuat naik fail YAML yang dieksport melalui antara muka pengurusan konfigurasi atau menggunakan arahan Drush. Ingatlah untuk menyandarkan laman web anda sebelum mengimport data konfigurasi untuk mengelakkan sebarang kehilangan data yang berpotensi.
Apakah suntikan ketergantungan dan mengapa penting dalam Drupal 8?
Suntikan ketergantungan adalah corak reka bentuk yang membolehkan satu objek memberikan kebergantungan untuk objek lain. Di Drupal 8, ia digunakan untuk membuat perkhidmatan dan pengawal lebih modular dan lebih mudah untuk diuji. Daripada membuat kebergantungan di dalam objek, mereka diluluskan (disuntik) melalui kaedah pembina atau setter. Ini menjadikan kod lebih mudah untuk diuji, lebih fleksibel dan kurang digabungkan.
Bagaimana untuk menyuntik kebergantungan ke dalam perkhidmatan Drupal 8 saya?
Untuk menyuntik kebergantungan ke dalam perkhidmatan di Drupal 8, anda perlu menentukannya dalam definisi perkhidmatan dalam fail services.yml
. Ketergantungan harus disenaraikan di bawah kekunci arguments
. Apabila perkhidmatan dibuat, bekas perkhidmatan secara automatik akan meluluskan kebergantungan ini kepada pembina perkhidmatan.
Apakah perbezaan antara perkhidmatan dan pemalam di Drupal 8?
Di Drupal 8, perkhidmatan adalah objek yang melakukan tugas global dalam aplikasi, sementara plug-in adalah objek yang melakukan tugas-tugas tertentu dengan cara pluggable. Perkhidmatan ditakrifkan dalam fail services.yml
dan diuruskan oleh bekas perkhidmatan, manakala pemalam ditemui dan instantiated oleh pengurus plug-in.
Bagaimana untuk mengatasi perkhidmatan di Drupal 8?
Untuk menimpa perkhidmatan di Drupal 8, anda perlu menentukan perkhidmatan dengan nama yang sama dengan perkhidmatan yang anda ingin ganti dalam fail services.yml
modul. Perkhidmatan baru anda harus melanjutkan kelas perkhidmatan asal dan mengatasi kaedah yang ingin anda ubah.
Bagaimana menggunakan sistem pengurusan konfigurasi untuk menjejaki perubahan dalam konfigurasi tapak?
Sistem Pengurusan Konfigurasi di Drupal 8 menyediakan cara untuk mengesan perubahan konfigurasi tapak melalui sistem snapshot konfigurasi. Sistem ini mengambil gambar konfigurasi aktif tapak setiap kali anda mengimport atau menyegerakkan data konfigurasi. Anda kemudian boleh membandingkan gambar ini untuk melihat perubahan yang telah dibuat.
services.yml
Apa yang dilakukan oleh fail dalam Drupal 8?
fail services.yml
di Drupal 8 adalah tempat di mana perkhidmatan modul ditakrifkan. Setiap perkhidmatan ditakrifkan menggunakan nama yang unik, nama kelas yang berkelayakan sepenuhnya yang melaksanakan perkhidmatan, dan sebarang perkhidmatan atau parameter perkhidmatan bergantung kepada. services.yml
Fail dibaca oleh bekas perkhidmatan, dan bekas perkhidmatan menguruskan penciptaan dan suntikan perkhidmatan.
Atas ialah kandungan terperinci Modul Drupal 8 - Pengurusan Konfigurasi dan Bekas Perkhidmatan. 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











JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Dalam PHP, pengendalian pengecualian dicapai melalui percubaan, menangkap, akhirnya, dan membuang kata kunci. 1) blok percubaan mengelilingi kod yang boleh membuang pengecualian; 2) Blok tangkapan mengendalikan pengecualian; 3) Akhirnya Blok memastikan bahawa kod itu sentiasa dilaksanakan; 4) Lemparan digunakan untuk membuang pengecualian secara manual. Mekanisme ini membantu meningkatkan keteguhan dan mengekalkan kod anda.

Terdapat empat jenis kesilapan utama dalam PHP: 1.Notice: yang paling sedikit, tidak akan mengganggu program, seperti mengakses pembolehubah yang tidak ditentukan; 2. Amaran: Serius daripada notis, tidak akan menamatkan program, seperti tidak mengandungi fail; 3. FatalError: Yang paling serius, akan menamatkan program ini, seperti tidak memanggil fungsi; 4. ParseError: Kesalahan sintaks, akan menghalang program daripada dilaksanakan, seperti lupa untuk menambah tag akhir.

Dalam PHP, perbezaan antara termasuk, memerlukan, termasuk_once, memerlukan_once adalah: 1) termasuk menghasilkan amaran dan terus melaksanakan, 2) memerlukan menghasilkan ralat maut dan berhenti pelaksanaan, 3) termasuk_once dan memerlukan_once mencegah kemasukan berulang. Pilihan fungsi ini bergantung kepada kepentingan fail dan sama ada perlu untuk mencegah kemasukan pendua. Penggunaan rasional dapat meningkatkan kebolehbacaan dan pemeliharaan kod.

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

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.
