Konsep yang digerakkan oleh peristiwa itu luas. Itu bisa di sisi klien atau di sisi server.
Dalam aplikasi WEB, kejadian sisi klien didasarkan pada JS atau plug-in atau JAVAAPPLET. Pada dasarnya, jika itu adalah plug-in atau JAVAAPPLET, itu tidak termasuk dalam kategori HTML yang digunakan sebenarnya Tidak banyak, paling banyak hanya operasi dasar seperti penyerahan FORM atau klik link, jadi membicarakan event tidak ada artinya.
Arti sebenarnya dari event-driven tidak terletak pada pemrograman visual, tetapi pada konsepnya, seperti halnya OO. Event-driven sebenarnya merupakan perpanjangan dari OO, dan prototipe aslinya adalah mekanisme pesan. Namun driver peristiwa merangkum pesan ke dalam fungsi yang dapat dipanggil, yang mirip dengan fungsi panggilan balik di API. Anda dapat menentukan sendiri konten eksekusi fungsi ini. Pemrograman visual memisahkan fungsi-fungsi ini, mendefinisikan parameter (kebanyakan objek siap pakai), dan memungkinkan Anda menulis kode Anda sendiri dan menggunakan parameter ini (sebenarnya, objek-objek ini) untuk melakukan sesuatu.
Oleh karena itu, sangat mungkin bagi PHP untuk menjadi event-driven, terutama karena desain kerangka kerjanya. Untuk membuat apa yang disebut driver peristiwa visual seperti VB, Anda harus memiliki lingkungan pengembangan terintegrasi yang mendukung, termasuk serangkaian fungsi seperti desain halaman, pengkodean peristiwa, kompilasi dan transcoding. Faktanya, yang digerakkan oleh peristiwa seperti NET hanya merangkum beberapa elemen atau kontrol WEB yang umum digunakan, seperti tombol, kotak teks, dll., sehingga Anda dapat memiliki antarmuka visual untuk dirancang , cukup ubah kode acara Anda menjadi JS atau kode sisi server. Untuk PHP, alasan utamanya adalah IDE tidak cukup kaya dan tidak ada mekanisme pra-kompilasi, sehingga kode akhir yang dikirimkan masih berupa kode PHP final, bukan campuran kode sumber daya NET dan kode peristiwa (biasanya ASP dokumen yang sesuai dengan spesifikasi XML. Berisi kode HTML non-standar). Oleh karena itu, PHP masih belum mampu mencapai apa yang disebut pemrograman event-driven dalam arti sempit di benak semua orang, namun nyatanya tidak ada masalah sama sekali.
Jika Anda tertarik, Anda mungkin ingin mengunjungi situs resmi www.php.net untuk melihat PRADO, sebuah kerangka kerja PHP berbasis peristiwa yang ditulis oleh seorang teman Tiongkok (Qiang Xue). Ini masih yang terbaik menerima suara tinggi, dan sangat direkomendasikan! Silakan merujuk ke http://www.zend.com/php5/contest . Setelah membaca kode sumbernya, Anda akan memahami apa itu driver acara PHP. Namun menurut saya dalam hal ini, karena PHP tidak memiliki mekanisme pra-kompilasi dan terlalu bergantung pada OO (walaupun kodenya ditulis dalam PHP5), kerangka kerja ini agak rumit, rumit untuk digunakan, dan tidak terlalu skalabel. Namun, konsepnya sangat bagus, dan beberapa idenya telah memecahkan masalah yang membingungkan saya selama berhari-hari. Izinkan saya memperkenalkan secara singkat kerangka kerja ini di bawah.
Kerangka kerja ini ditulis dalam ZDE dan PHP5. Dokumentasinya terperinci, strukturnya sangat jelas, dan komentarnya cukup. Kodenya sangat mudah dibaca, menunjukkan bahwa tingkat pengkodean penulisnya sangat tinggi. Penulis dengan jelas menyatakan bahwa framework ini mengacu pada konsep ASP.NET dan Borland Delphi.
Kerangka kerja ini sangat kuat dalam verifikasi (tidak ada modul seperti login verifikasi), sangat kuat, dan hampir tidak mungkin ada celah langsung yang dapat ditembus dari luar. Kerangka ini memperkenalkan konsep Batasan file , ini secara efektif memecahkan hambatan efisiensi dalam verifikasi skala besar. Satu-satunya masalah dengan metode verifikasi ini adalah pembuatan file spesifikasi itu sendiri lebih memakan waktu (tentu saja, menggunakan alat adalah masalah lain). file spesifikasi itu sendiri Dengan format dan spesifikasi), verifikasi secara alami dilakukan oleh framework tanpa memerlukan panggilan manusia setiap saat. Peristiwanya juga dapat ditentukan dalam file spesifikasi (menurut saya ini tidak perlu). Faktanya, file spesifikasinya agak mirip dengan file definisi FORM di DELPHI atau VB, tetapi berupa teks biasa yang ditulis dalam XML visualisasi. Sedangkan untuk event-driven, kerangka kerja ini memiliki serangkaian alur peristiwa dasar yang mirip dengan NET. Anda dapat menyesuaikan peristiwa-peristiwa ini pada tahapan yang berbeda. Faktanya, terus terang, ini berarti mendefinisikan ulang fungsi-fungsi OnXXX ini dan menggunakan parameter dalam a formulir yang diberikan. Anda juga dapat menambahkan acara Anda sendiri. Misalnya, saat Anda mendefinisikan komponen Anda sendiri, menentukan fungsi acara dan parameter yang mungkin dimiliki komponen tersebut dalam file spesifikasi saat menggunakan komponen - tetapi menurut saya metode ini terlalu rumit dan memerlukan file XML dalam jumlah besar untuk dibaca dan dianalisis. Meskipun sangat ketat dan aman, metode ini agak berlebihan dan tidak sepenuhnya memanfaatkan fleksibilitas PHP itu sendiri Ide saya adalah menggunakan sesuatu yang mirip dengan DELPHI Dengan menetapkan fungsi menangani atau menggunakan fitur fungsi panggilan balik C, Anda dapat menentukan acara kapan saja dan di mana saja saat menulis kode, dan masih dapat dengan jelas mengidentifikasi pengirim acara dan mengetik serta memilikinya. jaminan keamanan yang memadai tanpa memerlukan mesin. Ini secara efektif memaksa setiap komponen untuk hanya memiliki peristiwa tertentu, membuat modifikasi dan perluasan kode menjadi sangat nyaman. Tentu saja, ketika mengerjakan proyek besar, definisi yang ketat diperlukan, namun demikian, cara kerangka tersebut menangani peristiwa agak kuno.
Saya pikir templatnya adalah ide yang lebih baik. Templatnya agak mirip dengan file ASP NET sebelum dikompilasi (Saya tidak akrab dengan ASP NET, tapi saya memahami beberapa prinsip), tetapi cara kerjanya adalah file FORM yang mirip dengan DELPHI adalah konsep yang sangat bagus. Satu-satunya kelemahan adalah tidak nyaman menggunakan editor umum WYSIWYG seperti DW, karena beberapa komponen yang saling eksklusif dapat digabungkan dalam satu templat secara bersamaan dan memutuskan mana yang akan ditampilkan saja selama waktu proses.
Ketika saya melihat kode kerangka ini, saya masih menemukan bahwa ada beberapa item yang sangat lemah. Yang paling penting adalah masalah jalur. Skalabilitasnya sangat rendah. Ini seharusnya lebih cocok untuk host khusus. Tidak ada yang dapat Anda lakukan terhadap beberapa host yang dibatasi (pembatasan direktori atau pembatasan izin), dan tidak ada tindakan pengingat yang sesuai ( dan tidak ada antarmuka terkait). Ini menggunakan mekanisme rumit yang disebut asetService untuk jalur sumber daya atau file tertentu. Tujuannya adalah untuk menentukan jalur file. Penulis sendiri juga mengatakan bahwa jika layanan ini digunakan, konsumsi sistem akan meningkat secara signifikan dipinjam dari Konsep perpustakaan aset di FLASH memungkinkan Anda menentukan jalur secara sewenang-wenang, tetapi harus diverifikasi ulang setiap saat, yang tidak sebanding dengan keuntungannya. Pendekatan saya adalah memperbaiki beberapa jalur utama, dan subdirektorinya bisa berubah-ubah, yang secara komprehensif menyeimbangkan kontradiksi di antara keduanya. Karena kurangnya pertimbangan masalah jalur, framework tidak berdaya dengan pengaturan bahasa, template yang dipersonalisasi, dll. Jika ingin menerjemahkan suatu proyek, bisa dibayangkan prosedurnya rumit, beban kerjanya besar, dan mudah untuk dikerjakan. membuat kesalahan. Ini adalah satu-satunya masalah paling serius pada kerangka kerja ini.
Secara umum, konsep, desain, dan kode kerangka kerja ini benar-benar terbaik. Memang selalu ada kekurangan, namun hal ini tidak menghalangi kita untuk mempelajari dan mempelajarinya sama sekali. Saya belum membaca semua kodenya, hanya beberapa program inti dan beberapa instruksi, tetapi saya dapat melihat dengan jelas struktur dan idenya. Saya sangat mengagumi penulisnya, tetapi saya juga sangat menyesali kekurangannya. Apa pun yang terjadi, ini jelas merupakan pekerjaan yang bagus untuk mempelajari kode berbasis peristiwa PHP. Oleh karena itu sangat direkomendasikan!