مفهوم يحركه الحدث واسع. يمكن أن يكون من جانب العميل أو من جانب الخادم.
في تطبيقات الويب، تعتمد الأحداث من جانب العميل على JS أو المكونات الإضافية أو JAVAAPPLET بشكل أساسي، إذا كانت مكونًا إضافيًا أو JAVAAPPLET، فهي لا تنتمي في الواقع إلى فئة HTML المستخدمة في الواقع ليست كثيرة، على الأكثر هي عمليات أساسية مثل إرسال النموذج أو نقرات الارتباط، لذا فإن الحديث عن الأحداث لا معنى له.
المعنى الحقيقي للحدث الموجه لا يكمن في البرمجة المرئية، بل في مفهومها، تمامًا مثل OO. إن محرك الأحداث هو في الواقع امتداد لـ OO، ونموذجه الأولي الأصلي هو آلية الرسالة. لكن برنامج تشغيل الحدث يقوم بتغليف الرسالة في وظيفة قابلة للاستدعاء، والتي تشبه وظيفة رد الاتصال في واجهة برمجة التطبيقات (API). يمكنك تحديد محتوى تنفيذ هذه الوظائف بنفسك. تفصل البرمجة المرئية بين هذه الوظائف، وتحدد المعلمات (معظمها كائنات جاهزة)، وتسمح لك بكتابة التعليمات البرمجية الخاصة بك واستخدام هذه المعلمات (في الواقع، هذه الكائنات) للقيام بشيء ما.
لذلك، من الممكن تمامًا أن تكون لغة PHP مبنية على الأحداث، ويرجع ذلك أساسًا إلى تصميم إطار العمل. لإنشاء ما يسمى ببرنامج تشغيل الأحداث المرئية مثل VB، يجب أن يكون لديك بيئة تطوير متكاملة داعمة، بما في ذلك سلسلة من الوظائف مثل تصميم الصفحة وترميز الأحداث والتجميع وتحويل الترميز. في الواقع، تقوم العناصر المستندة إلى الأحداث مثل NET بتغليف بعض عناصر أو عناصر تحكم الويب شائعة الاستخدام، مثل الأزرار ومربعات النص وما إلى ذلك، بحيث يمكنك الحصول على واجهة مرئية للتصميم بعد تجميعها، ولا يزال النص هكذا ، ما عليك سوى تحويل رمز الحدث الخاص بك إلى JS أو رمز من جانب الخادم. بالنسبة لـ PHP، السبب الرئيسي هو أن IDE ليس غنيًا بدرجة كافية ولا توجد آلية تجميع مسبق، لذا فإن الكود النهائي المقدم لا يزال هو كود PHP النهائي، وليس مزيجًا من كود مصدر NET ورمز الحدث (عادةً ASP مستند يتوافق مع مواصفات XML ويحتوي على كود HTML غير قياسي). لذلك لا تزال لغة PHP غير قادرة على تحقيق ما يسمى بالبرمجة القائمة على الأحداث بالمعنى الضيق في أذهان الجميع، لكنها في الحقيقة خالية تمامًا من المشاكل.
إذا كنت مهتمًا، فقد ترغب في الانتقال إلى الصفحة الرئيسية الرسمية لـ www.php.net لإلقاء نظرة على PRADO، وهو إطار PHP قائم على الأحداث كتبه صديق صيني (Qiang Xue). ولا يزال هذا هو الأفضل على الإطلاق حصل على أصوات عالية، ويوصى به بشدة! يرجى الرجوع إلى http://www.zend.com/php5/contest بعد قراءة كود المصدر الخاص به، ستفهم ما هو برنامج تشغيل الحدث الخاص بـ PHP. لكنني أعتقد أنه في هذا الصدد، نظرًا لأن PHP لا تحتوي على آلية تجميع مسبق وتعتمد كثيرًا على OO (على الرغم من أن الكود مكتوب بلغة PHP5)، فإن إطار العمل هذا ضخم بعض الشيء، ومعقد الاستخدام، وغير قابل للتطوير بشكل كبير. إلا أن المفاهيم جيدة جدًا، وبعض الأفكار قد حلت مشاكل كانت تحيرني منذ أيام عديدة. اسمحوا لي أن أقدم بإيجاز هذا الإطار أدناه.
تم كتابة إطار العمل بلغة ZDE وPHP5، وهو يحتوي على وثائق مفصلة وبنية واضحة للغاية وتعليقات كافية. الكود سهل القراءة للغاية، مما يشير إلى أن مستوى ترميز المؤلف مرتفع جدًا. ذكر المؤلف بوضوح أن هذا الإطار يشير إلى مفاهيم ASP.NET وBorland Delphi.
هذا الإطار قوي جدًا في التحقق (وليس هناك أي وحدات مثل تسجيل الدخول للتحقق)، وهو قوي جدًا، ويكاد يكون من المستحيل وجود أي ثغرات مباشرة يمكن اختراقها من الخارج، ويقدم مفهوم ملفات المواصفات ، فهو يحل بشكل فعال اختناق الكفاءة في التحقق واسع النطاق. المشكلة الوحيدة في طريقة التحقق هذه هي أن إنتاج ملف المواصفات نفسه يتطلب جهدًا أكبر (بالطبع، استخدام الأدوات أمر آخر). ملف المواصفات نفسه بالتنسيقات والمواصفات)، يتم التحقق بشكل طبيعي بواسطة الإطار دون الحاجة إلى مكالمات بشرية في كل مرة. يمكن أيضًا تعريف أحداثه في ملف المواصفات (أعتقد أن هذا ليس ضروريًا). في الواقع، يشبه ملف المواصفات الخاص به إلى حد ما ملف تعريف النموذج في DELPHI أو VB، ولكنه نص عادي مكتوب بلغة XML التصور. أما بالنسبة للأحداث، فإن إطار العمل يحتوي على مجموعة مدمجة من تدفقات الأحداث الأساسية المشابهة لـ NET. يمكنك تخصيص هذه الأحداث في مراحل مختلفة، وبصراحة، فهذا يعني إعادة تعريف وظائف OnXXX هذه واستخدام المعلمات في ملف يمكنك أيضًا إضافة الأحداث الخاصة بك، على سبيل المثال، عند تحديد المكون الخاص بك، حدد وظائف الحدث والمعلمات التي قد يحتوي عليها المكون في ملف المواصفات، ويمكنك تحديد هذه الوظائف المسموح بها مباشرةً عند استخدام المكون - لكنني أعتقد أن هذه الطريقة معقدة للغاية وتتطلب قراءة وتحليل عدد كبير من ملفات XML. على الرغم من أنها صارمة وآمنة للغاية، إلا أنها مفرطة بعض الشيء ولا تستخدم مرونة PHP نفسها بشكل كامل فكرتي هي استخدام شيء مشابه لـ DELPHI من خلال تعيين مقابض الوظائف أو استخدام ميزات وظيفة رد الاتصال في لغة C، يمكنك تحديد الأحداث في أي وقت وفي أي مكان أثناء كتابة التعليمات البرمجية، وستظل قادرًا على تحديد مرسل الحدث ونوعه بوضوح. ضمانات أمنية كافية دون الحاجة إلى الآلات، فهي تجبر كل مكون بشكل فعال على إجراء أحداث معينة فقط، مما يجعل تعديل التعليمات البرمجية وتوسيعها أمرًا مريحًا للغاية. بالطبع، عند العمل على مشاريع كبيرة، تكون التعريفات الصارمة ضرورية، ولكن على الرغم من ذلك، فإن طريقة إطار العمل في التعامل مع الأحداث قديمة إلى حد ما.
أعتقد أن قالبه فكرة أفضل. قالبه يشبه إلى حد ما ملف ASP الخاص بـ NET قبل التجميع (لست على دراية بـ ASP NET، لكني أفهم بعض المبادئ)، ولكن الطريقة التي يعمل بها هي ملف FORM مشابه لـ DELPHI. هو مفهوم جيد جدًا، والعيب الوحيد هو أنه ليس من المناسب جدًا استخدام محرر عام WYSIWYG مثل DW، لأنه يمكن دمج العديد من المكونات المتبادلة في قالب واحد معًا في نفس الوقت وتحديد العناصر التي سيتم عرضها فقط أثناء وقت التشغيل.
عندما أنظر إلى كود هذا الإطار، ما زلت أجد أنه يحتوي على بعض العناصر الضعيفة جدًا. المشكلة الأكثر أهمية هي مشكلة المسار، وقابلية التوسع منخفضة جدًا، ويجب أن تكون أكثر ملاءمة للمضيفين المخصصين. لا يمكنك فعل أي شيء بشأن بعض المضيفين المقيدين (قيود الدليل أو قيود الأذونات)، ولا توجد إجراءات تذكير مقابلة. ولا توجد واجهة ذات صلة). ويستخدم آلية مرهقة تسمى خدمة الأصول لمسار موارد أو ملفات معينة. والغرض من ذلك هو تحديد مسار الملف. كما قال المؤلف نفسه إنه في الواقع، سيزداد استهلاك النظام بشكل كبير مستعار من مفهوم مكتبة الأصول في FLASH يسمح لك بتحديد المسار بشكل تعسفي، ولكن يجب إعادة التحقق منه في كل مرة، وهو ما لا يستحق المكسب. نهجي هو إصلاح عدة مسارات رئيسية، ويمكن أن تكون أدلةها الفرعية عشوائية، مما يوازن بشكل شامل التناقض بين الاثنين. نظرًا لعدم مراعاة مشكلات المسار، يصبح إطار العمل عاجزًا فيما يتعلق بإعدادات اللغة والقوالب المخصصة وما إلى ذلك. إذا كنت ترغب في ترجمة مشروع، فمن الممكن أن تكون الإجراءات معقدة، وعبء العمل ضخم، ومن السهل ترجمة مشروع ما. ارتكاب الأخطاء. هذه هي المشكلة الأكثر خطورة في الإطار.
بشكل عام، يعتبر مفهوم وتصميم ورمز هذا الإطار من الدرجة الأولى على الإطلاق. وبالطبع هناك دائما نواقص، لكن هذا لا يمنعنا من دراستها وتعلمها على الإطلاق. لم أقرأ كل التعليمات البرمجية الخاصة به، فقط عدد قليل من البرامج الأساسية وبعض التعليمات، ولكن يمكنني أن أرى بوضوح هيكلها وأفكارها، وأنا معجب بشدة بالمؤلف، لكنني أيضًا أشعر بالأسف الشديد لأوجه القصور. بغض النظر عن ذلك، فهو بالتأكيد عمل جيد لدراسة كود PHP المبني على الأحداث. لذلك ينصح بشدة!