Понятие событийно-ориентированного подхода является широким. Это может быть на стороне клиента или на стороне сервера.
В WEB-приложениях события на стороне клиента основаны на JS, плагинах или JAVAAPPLET. По сути, если это плагин или JAVAAPPLET, он не относится к категории HTML. Фактически, это случаи, когда JS должен быть. используемых на самом деле их не так много, в основном это базовые операции, такие как отправка ФОРМЫ или клики по ссылкам, поэтому говорить о событиях бессмысленно.
Настоящий смысл событийно-ориентированного программирования заключается не в визуальном программировании, а в его концепции, как и в объектно-ориентированном программировании. Управление событиями на самом деле является расширением объектно-ориентированного подхода, а его первоначальным прототипом является механизм сообщений. Но драйвер событий инкапсулирует сообщение в вызываемую функцию, которая аналогична функции обратного вызова в API. Содержимое выполнения этих функций можно определить самостоятельно. Визуальное программирование разделяет эти функции, определяет параметры (в основном готовые объекты) и позволяет написать собственный код и использовать эти параметры (собственно, эти объекты) для чего-то.
Таким образом, вполне возможно, что PHP будет управляться событиями, в основном благодаря конструкции платформы. Чтобы создать так называемый драйвер визуальных событий, такой как VB, у вас должна быть поддерживающая интегрированная среда разработки, включающая ряд функций, таких как дизайн страницы, кодирование событий, компиляция и перекодирование. На самом деле, приложения, управляемые событиями, такие как NET, просто инкапсулируют некоторые часто используемые WEB-элементы или элементы управления, такие как кнопки, текстовые поля и т. д., так что у вас есть возможность спроектировать визуальный интерфейс. После компиляции он по-прежнему будет иметь такой текст. просто преобразуйте код события в JS или серверный код. Для PHP основная причина заключается в том, что IDE недостаточно богата и отсутствует механизм предварительной компиляции, поэтому окончательный представленный код по-прежнему является окончательным кодом PHP, а не смесью кода ресурсов NET и кода событий (обычно ASP). документ, соответствующий спецификации XML. Содержит нестандартный HTML-код). Таким образом, PHP до сих пор не способен реализовать так называемое событийно-ориентированное программирование в узком смысле, в понимании каждого, но на самом деле это совершенно без проблем.
Если вам интересно, вы можете зайти на официальную домашнюю страницу www.php.net и взглянуть на PRADO, событийно-управляемый PHP-фреймворк, написанный моим китайским другом (Цян Сюэ). Это по-прежнему лучший из существующих. получил высокие голоса и настоятельно рекомендуется! Пожалуйста, обратитесь к http://www.zend.com/php5/contest . Прочитав исходный код, вы поймете, что такое драйвер событий PHP. Но я думаю, что в этом отношении, поскольку PHP не имеет механизма предварительной компиляции и слишком сильно полагается на ОО (хотя код написан на PHP5), этот фреймворк немного громоздкий, сложный в использовании и не очень масштабируемый. Тем не менее, концепции очень хороши, и некоторые идеи решили проблемы, которые озадачивали меня в течение многих дней. Позвольте мне кратко представить эту структуру ниже.
Фреймворк написан на ZDE и PHP5. Он имеет подробную документацию, очень четкую структуру и достаточное количество комментариев. Код очень легко читается, что указывает на очень высокий уровень программирования автора. Автор четко заявил, что этот фреймворк относится к концепциям ASP.NET и Borland Delphi.
Эта структура очень сильна в проверке (нет таких модулей, как проверка входа в систему), очень надежна, и практически невозможно иметь какие-либо прямые лазейки, в которые можно проникнуть извне. Она вводит концепцию файлов спецификации. , он эффективно решает проблему эффективности при крупномасштабной проверке. Единственная проблема этого метода проверки заключается в том, что создание самого файла спецификации более трудоемко (конечно, использование инструментов — это другое дело). сам файл спецификации с форматами и спецификациями), проверка, естественно, выполняется фреймворком без необходимости каждый раз обращаться к человеку. Его события также можно определить в файле спецификации (думаю, в этом нет необходимости). Фактически, его файл спецификации чем-то похож на файл определения FORM в DELPHI или VB, но это простой текст, написанный на XML. визуализация. Что касается управления событиями, то в фреймворке есть встроенный набор базовых потоков событий, похожих на NET. Вы можете настраивать эти события на разных этапах. Фактически, если говорить прямо, это означает переопределение этих функций OnXXX и использование параметров в файле. данной форме. Вы также можете добавлять свои собственные события. Например, когда вы определяете свой собственный компонент, определите функции событий и параметры, которые компонент может иметь в файле спецификации. В будущем вы можете напрямую определить эти разрешенные функции. при использовании компонента - но я считаю, что этот метод слишком сложен и требует чтения и анализа большого количества XML-файлов. Хотя он очень строгий и безопасный, он немного чрезмерен и не полностью использует гибкость самого PHP. Моя идея состоит в том, чтобы использовать что-то похожее на DELPHI. Назначая дескрипторы функций или используя возможности функции обратного вызова C, вы можете определять события в любое время и в любом месте во время написания кода, и при этом иметь возможность четко идентифицировать отправителя и тип события, а также иметь возможность его использовать. достаточные гарантии безопасности без необходимости использования оборудования. Он фактически заставляет каждый компонент иметь только определенные события, что делает модификацию и расширение кода очень удобными. Конечно, при работе над большими проектами строгие определения необходимы, но даже в этом случае способ обработки событий в фреймворке несколько старомоден.
Я думаю, что его шаблон - лучшая идея. Его шаблон чем-то похож на файл ASP NET до компиляции (я не знаком с ASP NET, но понимаю некоторые принципы), но принцип его работы - это файл FORM, аналогичный DELPHI. это очень хорошая концепция. Единственный недостаток - не очень удобно использовать общий WYSIWYG-редактор, такой как DW, потому что в одном шаблоне можно одновременно объединить несколько взаимоисключающих компонентов и решить, какие из них отображать только. во время выполнения.
Когда я смотрю на код этого фреймворка, я все равно обнаруживаю, что в нем есть очень слабые места. Наиболее важной из них является проблема с путем. Масштабируемость очень низкая. Она должна больше подходить для выделенных хостов. С некоторыми ограниченными хостами ничего не поделаешь (ограничения каталогов или ограничения разрешений), и соответствующих мер напоминания нет (). и нет соответствующего интерфейса). Он использует громоздкий механизм под названием assetsService для пути к определенным ресурсам или файлам. Сам автор также сказал, что если использовать этот сервис, потребление системы значительно увеличится. заимствовано из Концепция библиотеки ресурсов во FLASH позволяет указывать путь произвольно, но его необходимо каждый раз перепроверять, что не стоит выигрыша. Мой подход заключается в том, чтобы зафиксировать несколько основных путей, а их подкаталоги могут быть произвольными, что полностью уравновешивает противоречие между ними. Из-за отсутствия учета проблем пути фреймворк бессилен с языковыми настройками, персонализированными шаблонами и т. д. Если вы хотите перевести проект, то вполне возможно, что процедуры сложны, рабочая нагрузка огромна, и его легко перевести. совершать ошибки. Это самая серьезная проблема с фреймворком.
В общем, концепция, дизайн и код этого фреймворка просто первоклассные. Конечно, всегда есть недостатки, но это совершенно не мешает нам изучать и учиться этому. Я не читал весь его код, только несколько основных программ и некоторые инструкции, но ясно вижу его структуру и идеи. Я глубоко восхищаюсь автором, но также глубоко сожалею о недостатках. Несмотря ни на что, это определенно хорошая работа для изучения событийно-управляемого кода PHP. Поэтому очень рекомендуется!