El concepto de impulsado por eventos es amplio. Puede ser del lado del cliente o del lado del servidor.
En las aplicaciones WEB, los eventos del lado del cliente se basan en JS o complementos o JAVAAPPLET. Básicamente, si es un complemento o JAVAAPPLET, no pertenece a la categoría de HTML. De hecho, las ocasiones en las que JS debe ser. utilizados son en realidad No hay muchos, como máximo son operaciones básicas como el envío de FORMULARIO o clics en enlaces, por lo que hablar de eventos no tiene sentido.
El verdadero significado de event-driven no radica en la programación visual, sino en su concepto, al igual que OO. Impulsado por eventos es en realidad una extensión de OO y su prototipo original es el mecanismo de mensajes. Pero el controlador de eventos encapsula el mensaje en una función invocable, que es similar a la función de devolución de llamada en la API. Puede definir el contenido de ejecución de estas funciones usted mismo. La programación visual separa estas funciones, define parámetros (en su mayoría objetos listos para usar) y le permite escribir su propio código y usar estos parámetros (en realidad, estos objetos) para hacer algo.
Por lo tanto, es completamente posible que PHP esté controlado por eventos, principalmente debido al diseño del marco. Para crear el llamado controlador de eventos visuales como VB, debe tener un entorno de desarrollo integrado de soporte, que incluya una serie de funciones como diseño de páginas, codificación de eventos, compilación y transcodificación. De hecho, los basados en eventos como NET simplemente encapsulan algunos elementos o controles WEB de uso común, como botones, cuadros de texto, etc., para que pueda tener una interfaz visual para diseñar. Una vez compilado, sigue siendo un texto como este. , simplemente convierta su código de evento en JS o código del lado del servidor. Para PHP, la razón principal es que el IDE no es lo suficientemente rico y no existe un mecanismo de precompilación, por lo que el código final enviado sigue siendo el código PHP final, en lugar de una mezcla de código de recursos NET y código de evento (generalmente un código ASP). documento que se ajusta a la especificación XML Contiene código HTML no estándar). Por lo tanto, PHP todavía no puede lograr la llamada programación basada en eventos en sentido estricto en la mente de todos, pero de hecho no tiene ningún problema.
Si está interesado, puede ir a la página de inicio oficial de www.php.net para echar un vistazo a PRADO, un marco PHP basado en eventos escrito por un amigo chino (Qiang Xue). Este sigue siendo el mejor que existe. Recibió muchos votos y es muy recomendable. Consulte http://www.zend.com/php5/contest . Después de leer su código fuente, comprenderá qué es el controlador de eventos de PHP. Pero creo que en este sentido, debido a que PHP no tiene un mecanismo de precompilación y depende demasiado de OO (aunque el código está escrito en PHP5), este marco es un poco voluminoso, complicado de usar y poco escalable. Sin embargo, los conceptos son muy buenos y algunas de las ideas han resuelto problemas que me han desconcertado durante muchos días. Permítanme presentarles brevemente este marco a continuación.
El marco está escrito en ZDE y PHP5. Tiene documentación detallada, una estructura muy clara y suficientes comentarios. El código es muy fácil de leer, lo que indica que el nivel de codificación del autor es muy alto. El autor afirmó claramente que este marco se refiere a los conceptos de ASP.NET y Borland Delphi.
Este marco es muy sólido en verificación (no es que existan módulos como el inicio de sesión de verificación), muy robusto y es casi imposible tener lagunas directas que puedan penetrarse desde el exterior. Introduce el concepto de archivos de especificación. , Resuelve efectivamente el cuello de botella de eficiencia en la verificación a gran escala. El único problema con este método de verificación es que la producción del archivo de especificación en sí es más laboriosa (por supuesto, el uso de herramientas es otra cuestión, una vez hecho). el archivo de especificación en sí Con formatos y especificaciones), la verificación la realiza naturalmente el marco sin la necesidad de llamadas humanas cada vez. Sus eventos también se pueden definir en el archivo de especificación (creo que esto no es necesario). De hecho, su archivo de especificación es algo similar al archivo de definición de FORM en DELPHI o VB, pero es texto sin formato escrito en XML. visualización. En cuanto a lo impulsado por eventos, el marco tiene un conjunto integrado de flujos de eventos básicos similares a NET. Puede personalizar estos eventos en diferentes etapas. De hecho, para decirlo sin rodeos, significa redefinir estas funciones de OnXXX y usar parámetros en un. formulario dado. También puede agregar sus propios eventos. Por ejemplo, cuando define su propio componente, defina las funciones de evento y los parámetros que el componente puede tener en el archivo de especificación. En el futuro, puede definir directamente estas funciones permitidas. al usar el componente, pero creo que este método es demasiado complicado y requiere leer y analizar una gran cantidad de archivos XML. Aunque es muy riguroso y seguro, es un poco excesivo y no utiliza completamente la flexibilidad del propio PHP. Mi idea es usar algo similar a DELPHI. Al asignar identificadores de funciones o usar las funciones de la función de devolución de llamada de C, puede definir eventos en cualquier momento y en cualquier lugar mientras escribe código, y aún así poder identificar claramente el remitente del evento, el tipo y la información. suficientes garantías de seguridad sin necesidad de maquinaria. Obliga efectivamente a cada componente a tener solo ciertos eventos, lo que hace que la modificación y expansión del código sea muy conveniente. Por supuesto, cuando se trabaja en proyectos grandes, se necesitan definiciones estrictas, pero aun así, la forma en que el marco maneja los eventos es algo anticuada.
Creo que su plantilla es una mejor idea. Su plantilla es algo similar al archivo ASP de NET antes de la compilación (no estoy familiarizado con ASP NET, pero entiendo algunos principios), pero la forma en que funciona es un archivo FORM similar a DELPHI. es un muy buen concepto. El único inconveniente es que no es muy conveniente utilizar un editor general WYSIWYG como DW, porque se pueden combinar varios componentes mutuamente excluyentes en una plantilla al mismo tiempo y decidir cuáles mostrar solo. durante el tiempo de ejecución.
Cuando miro el código de este marco, todavía encuentro que tiene algunos elementos muy débiles. El más importante es el problema de la ruta. La escalabilidad es muy baja. Debería ser más adecuado para hosts dedicados. No hay nada que pueda hacer con algunos hosts restringidos (restricciones de directorio o restricciones de permisos) y no existen medidas de recordatorio correspondientes. y ninguna interfaz relacionada). Utiliza un mecanismo engorroso llamado activeService para la ruta de ciertos recursos o archivos. El objetivo es determinar la ruta del archivo. El propio autor también dijo que si se utiliza este servicio, el consumo del sistema aumentará significativamente. Tomado prestado de El concepto de biblioteca de activos en FLASH le permite especificar la ruta arbitrariamente, pero debe volver a verificarse cada vez, lo que no vale la pena. Mi enfoque es arreglar varias rutas principales, y sus subdirectorios pueden ser arbitrarios, lo que equilibra de manera integral la contradicción entre las dos. Debido a la falta de consideración de las cuestiones de ruta, el marco es impotente con la configuración de idioma, las plantillas personalizadas, etc. Si desea traducir un proyecto, es posible que los procedimientos sean complicados, la carga de trabajo sea enorme y sea fácil de cometer errores. Este es el problema más grave del marco.
En términos generales, el concepto, el diseño y el código de este marco son absolutamente de primer nivel. Por supuesto, siempre hay deficiencias, pero esto no nos impide estudiarlo y aprenderlo en absoluto. No he leído todo su código, solo algunos programas básicos y algunas instrucciones, pero puedo ver claramente su estructura e ideas. Admiro profundamente al autor, pero también lamento profundamente las deficiencias. Pase lo que pase, definitivamente es un buen trabajo para estudiar el código PHP controlado por eventos. ¡Por lo tanto, muy recomendable!