Este documento presenta una introducción al desarrollo de aplicaciones con el framework Zend. Explica la arquitectura MVC y los requisitos técnicos para usar Zend Framework. También describe la estructura de directorios recomendada y explica cómo configurar el archivo index.php para inicializar la aplicación y manejar las rutas.
Este documento describe varios frameworks de PHP populares como Zend, Symfony, Seagull, Prado, CodeIgniter, CakePHP, PHP on TRAX y Zoop Framework. Explica sus características, estructuras de directorios, instalación y cómo crear pequeñas aplicaciones de ejemplo con cada uno.
El documento describe el framework KohanaPHP, un framework PHP ligero y flexible para desarrollar aplicaciones web. Explica que se basa en CodeIgniter y mejora el uso de objetos en PHP5. Resume las características principales como su diseño orientado a objetos, compatibilidad con UTF-8 y patrón MVC. También describe brevemente la instalación, directorios, URLs, controladores y librerías.
96 Php. Instalacion De Php5 Sobre Apache 2.0.58José M. Padilla
Este documento proporciona instrucciones para instalar PHP 5 sobre Apache 2.0.58 de dos formas: como un módulo CGI o como un módulo de Apache. Explica cómo modificar el archivo de configuración httpd.conf para cambiar la ruta raíz del servidor y agregar líneas para admitir PHP. También proporciona la sintaxis para ejecutar Apache con cada configuración.
C:\Fakepath\Dm Trejo Produccion De Recursos[1]Dulce trejo
Wamp5 es un paquete de software gratuito que incluye Apache, MySQL, PHP y PHPMyAdmin. Se puede descargar e instalar fácilmente para crear y probar sitios web locales en una computadora. La instalación toma menos de 10 pasos y configura todo lo necesario para ejecutar un servidor web local, incluido el acceso a través de las direcciones http://localhost o http://127.0.0.1.
Este documento describe Spring Roo, una herramienta de desarrollo ágil para crear aplicaciones Spring. Spring Roo permite generar rápidamente una aplicación base incluyendo frameworks populares como Spring MVC, GWT y JSF. También cubre temas como el acceso a datos mediante repositorios JPA, consultas personalizadas, relaciones entre entidades y la creación de un proyecto Roo.
WebUtil es una utilidad de Oracle Forms que permite llevar a cabo tareas complejas en el navegador del cliente de forma sencilla utilizando solo PL/SQL. Proporciona características como ejecutar comandos del host cliente, integrar con OLE del lado cliente, transferir archivos entre cliente, servidor y base de datos, y leer información de la máquina cliente. Su instalación y configuración puede ser compleja pero simplifica el desarrollo de aplicaciones web Oracle Forms.
En esta práctica, emplearemos algunas de las características principalmente, la
utilización de servidores virtuales, como configuracion de servidor apache,configuracion de phpmyadmin e instalacion de joomla bajo el entorno ubuntu*
Este documento describe varios frameworks de PHP populares como Zend, Symfony, Seagull, Prado, CodeIgniter, CakePHP, PHP on TRAX y Zoop Framework. Explica sus características, estructuras de directorios, instalación y cómo crear pequeñas aplicaciones de ejemplo con cada uno.
El documento describe el framework KohanaPHP, un framework PHP ligero y flexible para desarrollar aplicaciones web. Explica que se basa en CodeIgniter y mejora el uso de objetos en PHP5. Resume las características principales como su diseño orientado a objetos, compatibilidad con UTF-8 y patrón MVC. También describe brevemente la instalación, directorios, URLs, controladores y librerías.
96 Php. Instalacion De Php5 Sobre Apache 2.0.58José M. Padilla
Este documento proporciona instrucciones para instalar PHP 5 sobre Apache 2.0.58 de dos formas: como un módulo CGI o como un módulo de Apache. Explica cómo modificar el archivo de configuración httpd.conf para cambiar la ruta raíz del servidor y agregar líneas para admitir PHP. También proporciona la sintaxis para ejecutar Apache con cada configuración.
C:\Fakepath\Dm Trejo Produccion De Recursos[1]Dulce trejo
Wamp5 es un paquete de software gratuito que incluye Apache, MySQL, PHP y PHPMyAdmin. Se puede descargar e instalar fácilmente para crear y probar sitios web locales en una computadora. La instalación toma menos de 10 pasos y configura todo lo necesario para ejecutar un servidor web local, incluido el acceso a través de las direcciones http://localhost o http://127.0.0.1.
Este documento describe Spring Roo, una herramienta de desarrollo ágil para crear aplicaciones Spring. Spring Roo permite generar rápidamente una aplicación base incluyendo frameworks populares como Spring MVC, GWT y JSF. También cubre temas como el acceso a datos mediante repositorios JPA, consultas personalizadas, relaciones entre entidades y la creación de un proyecto Roo.
WebUtil es una utilidad de Oracle Forms que permite llevar a cabo tareas complejas en el navegador del cliente de forma sencilla utilizando solo PL/SQL. Proporciona características como ejecutar comandos del host cliente, integrar con OLE del lado cliente, transferir archivos entre cliente, servidor y base de datos, y leer información de la máquina cliente. Su instalación y configuración puede ser compleja pero simplifica el desarrollo de aplicaciones web Oracle Forms.
En esta práctica, emplearemos algunas de las características principalmente, la
utilización de servidores virtuales, como configuracion de servidor apache,configuracion de phpmyadmin e instalacion de joomla bajo el entorno ubuntu*
JBoss AS jeap - Curso JBoss JB366 Día 1 César Pajares
Este documento proporciona una visión general de los servidores de aplicaciones y JBoss en particular. Explica que un servidor de aplicaciones es un software que ejecuta aplicaciones y proporciona servicios a computadoras cliente, manejando la lógica de negocio y acceso a datos. También describe la arquitectura de tres capas de Java EE y cómo JBoss implementa este estándar de manera abierta y flexible.
Kohana es un ligero framework PHP para desarrollo web basado en el patrón MVC y que implementa HMVC. Ofrece seguridad, facilidad de uso y baja curva de aprendizaje. Se instala descargando el archivo más reciente del sitio web de Kohana y extrayéndolo en el servidor, luego configurando archivos como .htaccess y bootstrap.php para indicar la ubicación raíz y activar reescritura de URLs.
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4 César Pajares
Este documento contiene información sobre cómo instalar y configurar JBoss Application Server para que se ejecute como un servicio en Microsoft Windows. Explica diferentes métodos como usar JavaService, JavaServiceWrapper y configurar el directorio de despliegue. También cubre temas como monitorización de JBoss usando JMX y herramientas como JConsole, MC4j y ManageEngine.
Este documento describe JBoss, un servidor de aplicaciones Java de código abierto. JBoss implementa los estándares J2EE y ofrece servicios como EJB, Hibernate y JMS. Usa directorios como bin, deploy y conf para ejecutarse y administrarse. Los desarrolladores pueden implementar EJBs, servicios web y aplicaciones JSF en JBoss.
Este documento describe el proceso de instalación de PHP 4 sobre Apache 2.0.58 de dos maneras: como módulo CGI o como módulo de Apache. Para la instalación CGI se realizan cambios en el archivo de configuración httpd.conf para apuntar al directorio raíz y directorios correctos y agregar líneas para procesar archivos PHP. Para instalar como módulo de Apache los pasos son similares pero se carga el módulo php4apache2.dll y se agregan líneas para procesar archivos PHP. En ambos casos
WebUtil de Oracle Forms permite aumentar la funcionalidad de aplicaciones web desarrolladas con Oracle Forms al aprovechar recursos del cliente como manipulación de archivos, ejecución de comandos del sistema operativo y transferencia de archivos entre el cliente y el servidor. WebUtil está compuesto de librerías PL/SQL, Java y componentes que facilitan la interacción con el navegador y el sistema operativo del cliente.
WebUtil es una herramienta que facilita el trabajo con aplicaciones Oracle Forms desplegadas en la web. Proporciona funcionalidad adicional como integración con Microsoft Office y permite transferir archivos entre el servidor y el cliente. Requiere configurar parámetros en el archivo webutil.cfg y crear directorios virtuales para transmitir archivos al tiempo de ejecución. Ofrece ventajas como autoinstalación de bibliotecas cliente pero tiene algunas limitaciones en ciertos sistemas operativos.
OpenLDAP es una implementación libre y de código abierto del protocolo LDAP. Incluye el servidor LDAP slapd, bibliotecas LDAP y herramientas cliente. Para instalar OpenLDAP, los usuarios deben descargar el software, configurarlo, compilarlo, probarlo, instalarlo, configurar slapd.conf, iniciar slapd y agregar entradas iniciales al directorio LDAP usando ldapadd.
El documento describe la instalación y uso básico del framework Zend. Explica que Zend Framework es un framework de código abierto para PHP que implementa el patrón MVC y tiene componentes con bajo acoplamiento. Detalla los pasos para instalar Zend Framework usando Composer, como crear un controlador y vista básicos, y ejecutar la aplicación en un navegador.
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 César Pajares
El documento describe los pasos para instalar JBoss AS 5.1.0, incluyendo la descarga e instalación de Java y JBoss, la configuración de las variables de entorno, y la ejecución inicial de JBoss para verificar la instalación. También cubre temas como la administración de JBoss a través de la consola y cómo acceder de forma remota, y proporciona información sobre cómo desinstalar JBoss y las herramientas Ant y Maven.
JBoss AS web services - Curso JBoss JB366 Día 4 César Pajares
Este documento contiene información sobre cómo configurar JBoss Application Server para que se ejecute como un servicio en Microsoft Windows. Explica dos métodos: usar JavaService o JavaServiceWrapper. También cubre temas como el despliegue de aplicaciones en JBoss AS, la configuración del directorio de despliegue y la API JMX para la monitorización.
Webutil es una librería de Oracle Forms que proporciona funciones para integrar aplicaciones Forms con el lado del cliente, permitiendo leer y escribir archivos, ejecutar comandos del sistema operativo del cliente, y obtener información del cliente. Se debe configurar Webutil descomprimiendo el archivo, creando un usuario de base de datos, agregando librerías y archivos de configuración. Proporciona ventajas como actualización fácil de aplicaciones web existentes pero también tiene limitaciones como compatibilidad con navegadores.
Primefaces es una implementación de JSF de código libre.
En el 2015 es la implementación de JSF mas popular.
Soporta AJAX basado en la especificación JSF2.0
Fácil de configurar.
Cuenta con Mobil UI Kit
Diego Armando Gomez
Este documento proporciona una introducción a PHP y MySQL. Explica brevemente el origen y desarrollo de PHP, cómo funcionan las páginas PHP, e instalación de PHP y MySQL. Luego cubre conceptos básicos como variables, operadores condicionales y ciclos en PHP, y el uso de tablas y vectores. Finalmente incluye ejemplos de código PHP simple.
Desarrollando Una Mejor Experiencia De Usuario Con Ajaxjuliocasal
Este documento presenta ASP.NET Ajax, un framework para crear experiencias web interactivas y enriquecidas. ASP.NET Ajax incluye controles de servidor que habilitan AJAX en aplicaciones ASP.NET, una biblioteca de scripts de cliente compatible con varios navegadores, y un conjunto de controles extendidos. El objetivo es demostrar la amplitud, simplicidad y extensibilidad de ASP.NET Ajax para mejorar la experiencia del usuario final.
Este documento describe cómo generar sitios web dinámicos usando PHP. Explica que PHP permite combinar código HTML y PHP en una misma página con extensión .php. También describe cómo modularizar un sitio web mediante la inclusión de módulos PHP independientes que generan cada sección dinámicamente. Finalmente, presenta algunas de las funcionalidades clave que ofrece PHP, como acceso a bases de datos, envío de correo, manejo de sesiones y más.
Este documento describe cómo configurar Apache 1.3.35 para usar PHP como un módulo mediante la modificación del archivo httpd.conf. Se recomienda hacer una copia de seguridad de httpd.conf antes de editarlo. Las modificaciones incluyen cambiar la directiva DirectoryIndex para incluir index.php, cargar el módulo PHP, agregar mod_php4.c, y establecer el tipo de archivo .php. Una vez realizados estos cambios, Apache podrá procesar scripts PHP.
Este documento describe las diferencias entre JAX-WS y JAX-RS, los estándares para crear web services y web services REST en Java. Explica que JAX-WS se usa para crear web services SOAP tradicionales mientras que JAX-RS se usa para crear servicios RESTful. También proporciona detalles sobre las implementaciones más populares de cada estándar como Apache CXF, Glassfish Metro y Jersey.
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
ZanPHP es un framework PHP para desarrollo rápido de aplicaciones web siguiendo el patrón MVC. Para usar ZanPHP se debe descargar, configurar archivos como database.php y config.php, y crear aplicaciones con directorios, controladores, modelos y vistas. ZanPHP facilita el desarrollo con funciones integradas, soporte a múltiples bases de datos, y traducciones automáticas.
Este documento introduce el framework Zend. Explica por qué usar un framework, las ventajas de Zend sobre otros frameworks como Symphony y CakePHP. Detalla conceptos básicos de Zend como MVC, excepciones, patrones de diseño singleton e interfaces fluidas. Finalmente, cubre la instalación de Zend, su estructura de directorios y el archivo bootstrap.php.
JBoss AS jeap - Curso JBoss JB366 Día 1 César Pajares
Este documento proporciona una visión general de los servidores de aplicaciones y JBoss en particular. Explica que un servidor de aplicaciones es un software que ejecuta aplicaciones y proporciona servicios a computadoras cliente, manejando la lógica de negocio y acceso a datos. También describe la arquitectura de tres capas de Java EE y cómo JBoss implementa este estándar de manera abierta y flexible.
Kohana es un ligero framework PHP para desarrollo web basado en el patrón MVC y que implementa HMVC. Ofrece seguridad, facilidad de uso y baja curva de aprendizaje. Se instala descargando el archivo más reciente del sitio web de Kohana y extrayéndolo en el servidor, luego configurando archivos como .htaccess y bootstrap.php para indicar la ubicación raíz y activar reescritura de URLs.
JBoss AS Seguridad - monitorizacións - Curso JBoss JB366 Día 4 César Pajares
Este documento contiene información sobre cómo instalar y configurar JBoss Application Server para que se ejecute como un servicio en Microsoft Windows. Explica diferentes métodos como usar JavaService, JavaServiceWrapper y configurar el directorio de despliegue. También cubre temas como monitorización de JBoss usando JMX y herramientas como JConsole, MC4j y ManageEngine.
Este documento describe JBoss, un servidor de aplicaciones Java de código abierto. JBoss implementa los estándares J2EE y ofrece servicios como EJB, Hibernate y JMS. Usa directorios como bin, deploy y conf para ejecutarse y administrarse. Los desarrolladores pueden implementar EJBs, servicios web y aplicaciones JSF en JBoss.
Este documento describe el proceso de instalación de PHP 4 sobre Apache 2.0.58 de dos maneras: como módulo CGI o como módulo de Apache. Para la instalación CGI se realizan cambios en el archivo de configuración httpd.conf para apuntar al directorio raíz y directorios correctos y agregar líneas para procesar archivos PHP. Para instalar como módulo de Apache los pasos son similares pero se carga el módulo php4apache2.dll y se agregan líneas para procesar archivos PHP. En ambos casos
WebUtil de Oracle Forms permite aumentar la funcionalidad de aplicaciones web desarrolladas con Oracle Forms al aprovechar recursos del cliente como manipulación de archivos, ejecución de comandos del sistema operativo y transferencia de archivos entre el cliente y el servidor. WebUtil está compuesto de librerías PL/SQL, Java y componentes que facilitan la interacción con el navegador y el sistema operativo del cliente.
WebUtil es una herramienta que facilita el trabajo con aplicaciones Oracle Forms desplegadas en la web. Proporciona funcionalidad adicional como integración con Microsoft Office y permite transferir archivos entre el servidor y el cliente. Requiere configurar parámetros en el archivo webutil.cfg y crear directorios virtuales para transmitir archivos al tiempo de ejecución. Ofrece ventajas como autoinstalación de bibliotecas cliente pero tiene algunas limitaciones en ciertos sistemas operativos.
OpenLDAP es una implementación libre y de código abierto del protocolo LDAP. Incluye el servidor LDAP slapd, bibliotecas LDAP y herramientas cliente. Para instalar OpenLDAP, los usuarios deben descargar el software, configurarlo, compilarlo, probarlo, instalarlo, configurar slapd.conf, iniciar slapd y agregar entradas iniciales al directorio LDAP usando ldapadd.
El documento describe la instalación y uso básico del framework Zend. Explica que Zend Framework es un framework de código abierto para PHP que implementa el patrón MVC y tiene componentes con bajo acoplamiento. Detalla los pasos para instalar Zend Framework usando Composer, como crear un controlador y vista básicos, y ejecutar la aplicación en un navegador.
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 César Pajares
El documento describe los pasos para instalar JBoss AS 5.1.0, incluyendo la descarga e instalación de Java y JBoss, la configuración de las variables de entorno, y la ejecución inicial de JBoss para verificar la instalación. También cubre temas como la administración de JBoss a través de la consola y cómo acceder de forma remota, y proporciona información sobre cómo desinstalar JBoss y las herramientas Ant y Maven.
JBoss AS web services - Curso JBoss JB366 Día 4 César Pajares
Este documento contiene información sobre cómo configurar JBoss Application Server para que se ejecute como un servicio en Microsoft Windows. Explica dos métodos: usar JavaService o JavaServiceWrapper. También cubre temas como el despliegue de aplicaciones en JBoss AS, la configuración del directorio de despliegue y la API JMX para la monitorización.
Webutil es una librería de Oracle Forms que proporciona funciones para integrar aplicaciones Forms con el lado del cliente, permitiendo leer y escribir archivos, ejecutar comandos del sistema operativo del cliente, y obtener información del cliente. Se debe configurar Webutil descomprimiendo el archivo, creando un usuario de base de datos, agregando librerías y archivos de configuración. Proporciona ventajas como actualización fácil de aplicaciones web existentes pero también tiene limitaciones como compatibilidad con navegadores.
Primefaces es una implementación de JSF de código libre.
En el 2015 es la implementación de JSF mas popular.
Soporta AJAX basado en la especificación JSF2.0
Fácil de configurar.
Cuenta con Mobil UI Kit
Diego Armando Gomez
Este documento proporciona una introducción a PHP y MySQL. Explica brevemente el origen y desarrollo de PHP, cómo funcionan las páginas PHP, e instalación de PHP y MySQL. Luego cubre conceptos básicos como variables, operadores condicionales y ciclos en PHP, y el uso de tablas y vectores. Finalmente incluye ejemplos de código PHP simple.
Desarrollando Una Mejor Experiencia De Usuario Con Ajaxjuliocasal
Este documento presenta ASP.NET Ajax, un framework para crear experiencias web interactivas y enriquecidas. ASP.NET Ajax incluye controles de servidor que habilitan AJAX en aplicaciones ASP.NET, una biblioteca de scripts de cliente compatible con varios navegadores, y un conjunto de controles extendidos. El objetivo es demostrar la amplitud, simplicidad y extensibilidad de ASP.NET Ajax para mejorar la experiencia del usuario final.
Este documento describe cómo generar sitios web dinámicos usando PHP. Explica que PHP permite combinar código HTML y PHP en una misma página con extensión .php. También describe cómo modularizar un sitio web mediante la inclusión de módulos PHP independientes que generan cada sección dinámicamente. Finalmente, presenta algunas de las funcionalidades clave que ofrece PHP, como acceso a bases de datos, envío de correo, manejo de sesiones y más.
Este documento describe cómo configurar Apache 1.3.35 para usar PHP como un módulo mediante la modificación del archivo httpd.conf. Se recomienda hacer una copia de seguridad de httpd.conf antes de editarlo. Las modificaciones incluyen cambiar la directiva DirectoryIndex para incluir index.php, cargar el módulo PHP, agregar mod_php4.c, y establecer el tipo de archivo .php. Una vez realizados estos cambios, Apache podrá procesar scripts PHP.
Este documento describe las diferencias entre JAX-WS y JAX-RS, los estándares para crear web services y web services REST en Java. Explica que JAX-WS se usa para crear web services SOAP tradicionales mientras que JAX-RS se usa para crear servicios RESTful. También proporciona detalles sobre las implementaciones más populares de cada estándar como Apache CXF, Glassfish Metro y Jersey.
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
ZanPHP es un framework PHP para desarrollo rápido de aplicaciones web siguiendo el patrón MVC. Para usar ZanPHP se debe descargar, configurar archivos como database.php y config.php, y crear aplicaciones con directorios, controladores, modelos y vistas. ZanPHP facilita el desarrollo con funciones integradas, soporte a múltiples bases de datos, y traducciones automáticas.
Este documento introduce el framework Zend. Explica por qué usar un framework, las ventajas de Zend sobre otros frameworks como Symphony y CakePHP. Detalla conceptos básicos de Zend como MVC, excepciones, patrones de diseño singleton e interfaces fluidas. Finalmente, cubre la instalación de Zend, su estructura de directorios y el archivo bootstrap.php.
Este documento describe la instalación y uso básico del framework Zend para desarrollo web en PHP. Explica que Zend es un framework open source basado en MVC y orientado a objetos. Detalla los pasos para instalar Zend usando Composer, incluyendo la creación de virtual hosts y la modificación del archivo hosts. También muestra cómo crear controladores y vistas básicas siguiendo el patrón MVC de Zend.
PHPMyAdmin es una herramienta de código abierto escrita en PHP para administrar bases de datos MySQL a través de una interfaz web. Nos permite crear, modificar y eliminar bases de datos, tablas, usuarios y permisos de una forma sencilla. Para usar PHPMyAdmin necesitamos tener instalados Apache, PHP y MySQL en nuestro servidor, y descargar e instalar el archivo de PHPMyAdmin en el directorio raíz del servidor web.
Este documento presenta una introducción a CakePHP, un framework de código abierto para el desarrollo web en PHP. Explica que CakePHP es una estructura de librerías y clases que permite a los desarrolladores crear aplicaciones web de forma rápida y flexible. También describe los requisitos de instalación, los conceptos básicos del patrón MVC en el que se basa CakePHP, y cómo instalar y configurar CakePHP en un servidor web.
El documento proporciona una guía paso a paso para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, configurar las variables y parámetros, y comprobar la instalación mediante la creación de un script PHP simple.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, configurar las variables y directorios correctos, y ejecutar los servicios. También incluye un ejemplo de script PHP "Hola Mundo" y una introducción a la sintaxis básica de PHP como variables, constantes y operadores.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y probar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y comprobar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
633f9e tutorial de php y my sql completoMETROPOLITANO
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y comprobar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y comprobar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y comprobar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y comprobar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
Este documento proporciona instrucciones para instalar Apache, PHP y MySQL en Windows y Linux/Unix. Explica cómo descargar e instalar los programas, editar archivos de configuración y probar la instalación con un script PHP simple. También incluye una sección sobre sintaxis básica de PHP como variables, operadores y constantes.
ZanPHP es un framework PHP de código abierto que facilita el desarrollo rápido de aplicaciones web siguiendo el patrón MVC. Usa patrones de diseño y mejores prácticas para producir código escalable y de alta calidad. Proporciona características como integración con bases de datos, controladores, vistas y modelos, así como documentación y proyectos de ejemplo.
Este documento proporciona un tutorial sobre cómo instalar PHP y MySQL en Windows y Linux/Unix, y explica los pasos para configurar Apache para usar PHP y conectarse a MySQL. También muestra un ejemplo de un script PHP básico y explica la sintaxis básica de PHP como delimitadores, comentarios y la instrucción echo.
Este documento proporciona un tutorial sobre cómo construir una aplicación simple con el patrón Modelo Vista Controlador (MVC) en PHP usando el framework zenphp. Explica cómo crear una clase modelo, vistas basadas en plantillas, e instanciar el controlador para procesar y mostrar los datos de una tabla de ejemplo.
El documento describe Laravel, un framework PHP para desarrollo web basado en MVC. Laravel es un framework joven con una gran comunidad y documentación completa que facilita el desarrollo de aplicaciones modernas de manera fácil y segura. Algunas ventajas de Laravel incluyen reducción de costos, sintaxis clara, amplia comunidad y documentación, y herramientas como Artisan para automatizar tareas.
Similar a Desarrollo Aplicaciones Zend Framework (20)
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
Uso de las Tics en la vida cotidiana.pptx231485414
Las Tecnologías de la Información y las Comunicaciones (TIC), son el conjunto de recursos, herramientas, equipos, programas informáticos, aplicaciones, redes y medios.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
2. concepto de “news” (noticia). Asi mismo “model” se refiere de la lógica de
“negocio” de nuestra aplicación y se encarga de cargar y guardar la
información a la base de datos.
View El “view” o vista, como su nombre lo implica, esta relacionado a la forma en
que se muestra la información al usuario. Por lo general es con HTML.
Controller El “Controller” o controlador, une a las partes anteriores, para asegurar que
se muestre la información correcta en la página.
Zend Framework usa la arquitectura Model-View-Controller (MVC). Con el fin de separar
todas las partes de tu aplicación para facilitar el desarrollo y mantenimiento.
Requisitos
Los requisitos para implementar Zend Framework son los siguientes:
• PHP 5.1.4 (o mas actual)
• Un servidor Web que soporte funcionalidades de mod_rewrite. Este tutorial asume
que se utilizara Apache.
Descargar el Framework
Zend Framework se puede descargar del siguiente enlace
http://framework.zend.com/download/stable tanto en formato zip y tar.gz. En el momento de
esta traducción la versión mas reciente es la 0.9. Deberán descargar la versión 0.9 para que
funcione el código.
Estructura del Directorio
Zend Framework no dictamina una estructura de ficheros, el manual recomienda una
estructura de ficheros común. Esta estructura asume que tu tienes control sobre la
configuración de Apache, aun así queremos facilitarles la vida, ya que empezaremos con una
modificación.
Comencemos creando un fichero en el directorio raíz del servidor Web, lo llamaremos
zf-tutorial. Esto quiere decir que el URL que apunta a nuestra aplicación estará en
http://localhost/zf-tutorial.
Se crearan los siguientes subdirectorios para almacenar los archivos de nuestra aplicación:
zf-tutorial/
/application
/controllers
/models
/views
/filters
/helpers
/scripts
/library
/public
/images
/scripts
/styles
Como te puedes dar cuenta, tenemos diferentes directorios para los archivos de “model”,
“view” y “controller” de nuestra aplicación. Todas las imágenes, scripts y arhivos CSS seran
almacenados en archivos diferentes dentro del directorio “public”. Los archivos descargados
del Zend Framework deberán ser almacenados en el directorio “library”. Si utilizamos algunas
otras librerías, estas pueden ser almacenadas aquí mismo.
Extrae el contenido del archivo ZendFramework-0.9.1-Beta.zip, a un directorio temporal.
Todos los archivos serán almacenados en un subdirectorio llamado ZendFramework-
0.9.1-Beta. Haz una copia del contenido de ZendFramework-0.9.1-
Page 2 of 20
3. Beta/library/Zend a zf-tutorial/library/. El directorio zf-tutorial/library/
debe contener un subdirectorio llamado Zend.
Bootstrapping (Configuración de Arranque)
El controlador (controller) de Zend FrameWork, Zend_Controller se diseño para ofrecer sitios
Web con direcciones url claras. Para lograr esto, todas las peticiones deberán ser
procesadas únicamente por un archivo index.php. Asi se ofrece un punto central para todas
las páginas de la aplicación y asegura la instalación de un ambiente correcto para ejecutar la
aplicación. Esto se logra mediante el uso de un archivo .htaccess dentro del directorio raíz de
zf-tutorial:
zf-tutorial/.htaccess
RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
La regla RewriteRule es muy sencilla y se puede interpretar de la siguiente forma “para
todas las direcciones url, redirígelas a index.php”.
También se han empleado algunas reglas de seguridad en PHP.ini. Ya deberían estar
implementadas correctamente, pero queremos asegurarnos. Tomen nota que la
configuración de php_flags en el archivo .htaccess funciona solamente si están usando
mod_php. Si utilizan CGI/FastCGI, deben asegurarse que este correctamente configurado su
archivo php.ini.
Sin embargo las peticiones de imágenes (images), archivos de JavaScript y archivos CSS no
deben de ser redirigidos a nuestro archivo de configuración de arranque (bootstrapper).
Almacenando todos estos archivos dentro del subdirectorio public, fácilmente podemos
configurar el acceso mediante un archivo .htaccess dentro del subdirectorio
zf-tutorial/public gestionado por medio de Apache:
zf-tutorial/public/.htaccess
RewriteEngine off
Mientras que no es estrictamente necesario utilizar reglas de rewrite, implementaremos
algunos archivos .htaccess para asegurar que nuestros directorios de application y
library están protegidos:
zf-tutorial/application/.htaccess
deny from all
zf-tutorial/library/.htaccess
deny from all
Es necesario que la directiva de configuración AllowOverride se encuentre habilitada con All
dentro del archivo httpd.conf de Apache, para que pueda procesar correctamente los
archivos .htaccess dentro de los subdirectorios mencionados anteriormente. La idea
presentada aquí de hacer uso de múltiples archivos .htaccess es de Jayson Minard expuesta
en el articulo “Blueprint for PHP Applications: Bootstrapping (Part 2) ”. Recomiendo
ampliamente leer ambos artículos.
Page 3 of 20
4. Archivo de Arranque de Configuración (Bootstrap): index.php
zf-tutorial/index.php es nuestro archivo de configuración de arranque y empieza con
el siguiente código:
zf-tutorial/index.php
<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/London');
set_include_path('.' . PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include quot;Zend/Loader.phpquot;;
Zend_Loader::loadClass('Zend_Controller_Front');
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
// run!
$frontController->dispatch();
Hacemos hincapié en el hecho de que no terminamos el archivo con ?>, ya que no se
necesita y omitiéndolo prevenimos errores difíciles de resolver cuando vayamos a utilizar la
función header()si se crea espacio adicional después del ?>.
Vamos a explicar cada parte del archivo.
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/London');
Estas líneas aseguran que vamos a ver los errores que hemos hecho (asumimos que se
tiene habilitado la configuración de display_errors a on dentro de php.ini). También
hemos configurado la zona horaria como lo requiere PHP 5.1+. Es obvio, que se debe ajustar
a tu propia zona horaria.
set_include_path('.' . PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include quot;Zend/Loader.phpquot;;
Zend Framework fue diseñado para incorporar sus archivos dentro del include path. También
hemos incluido el subdirectorio models dentro de include path para que posteriormente
podamos cargar con facilidad las clases model. Para terminar hemos incluido el archivo
Zend/Loader.php para que nos de acceso a la clase Zend_Loader que tiene las
funciones estáticas requeridas que nos permitirán cargar cualquier clase del Zend
Framework.
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass carga los nombres de las clases (named class). Esto se lleva a
cabo por medio de una conversión de los guiones bajos (_) del nombre en la ruta de la clase
por diagonales (/) agregando .php al final. Así que una clase llamada
Zend_Controller_Front será cargada de un archivo Zend/Controller/Front.php.
Page 4 of 20
5. Si seguimos la misma pauta para nombrar nuestras propias clases, solo necesitas utilizar
Zend_Loader::loadClass() para cargarlas también. La primera clase que
necesitaremos es la de front controller.
El front controller utiliza una clase de enrutamiento para dirigir la petición URL a la función
PHP destinada para desplegar la pagina correcta. Para que el enrutador opere
correctamente, necesita identificar cual parte del URL es la ruta a nuestro archivo
index.php para que pueda procesar los elementos URI partiendo de este punto. Esto se
lleva por medio del objeto Request. Efectúa una buena labor de auto-detectar la base URL
correcta, pero si no les funciona para su configuración, entonces pueden modificarla
utilizando la función $frontController->setBaseUrl().
Necesitamos configurar el front controller para que reconozca el directorio donde podrá
encontrar los controllers:
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory('./application/controllers');
$frontController->throwExceptions(true);
Como esto es un tutorial y estamos trabajando en un sistema de prueba, he decidido de
habilitar que el front controller muestre todas las excepciones que vayan presentándose. Por
defecto, el front controller recibirá todas excepciones y las almacenara en la propiedad
_exceptions del objeto “Response” (respuesta) que crea. En el se incluye la cabecera http,
el contenido de la pagina y las excepciones. El front controller enviara automáticamente las
cabeceras y mostrara el contenido de la pagina justo antes de terminar su tarea.
Esto puede ser un poco confuso para personas que empiezan a utilizar el Zend Framework,
por eso es mas fácil que todas las excepciones sean visibles. ¡Esta clarísimo que en un
servidor de producción uno no debe de mostrar los errores al usuario, de ninguna manera!
Finalmente llegamos al corazón de nuestra aplicación y la ejecutamos:
// run!
$frontController->dispatch();
Si nos dirigimos a esta direccion http://localhost/zf_tutorial/ para probar, nos debe generar el
siguiente error:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with
message 'Invalid controller specified (index)' in…
Esto nos indica que todavía no hemos terminado nuestra aplicación. Pero antes de hacerlo,
vamos a explicarles en que consiste la aplicación. Que es lo que haremos en el siguiente
punto.
El Sitio Web
Vamos a construir un sistema sencillo de inventarios para mostrar nuestra colección de CD’s.
La pagina principal tendrá la lista de nuestra colección y nos permitirá agregar, eliminar y
modificar CD’s. La lista se almacenara en una base de datos con la siguiente estructura:
Nombre del Campo Tipo Null? Detalles
id Integer No Primary key, Autoincrement
artist Varchar(100) No
title Varchar(100) No
Page 5 of 20
6. Páginas Requeridas
Las siguientes páginas serán requeridas para nuestra aplicación:
Home page Mostrara el listado de nuestros CD’s con enlaces para modificarlos y
eliminarlos. Así como un enlace para agregar un nuevo álbum.
Add New Album Esta página tendrá una forma para agregar un álbum nuevo.
Edit Album Esta página mostrara los detalles de un álbum para su modificación.
Delete Album En esta página confirmara si deseamos eliminar un álbum, para
posteriormente eliminarlo de la lista.
Organizando las Páginas.
Antes de comenzar a configurar nuestros archivos, es importante que se entienda como el
framework espera que las páginas se encuentren organizadas. Cada pagina de la aplicación
se reconoce como una acción (“action”) que están agrupados en controladores (“controllers”).
Por ejemplo para una dirección URL en el formato http://localhost/zf-
tutorial/news/view, el controlador es news y la acción es view. Esto nos permite
agrupar acciones que estén relacionadas. Digamos que un controlador news puede tener
las acciones current, archived y view. El sistema MVC de Zend Framework también da
soporte al agrupamiento de controladores, ¡pero esta aplicación no es lo suficientemente
grande para tomarnos esa molestia!
El controlador de Zend Framework’s se reserva una acción especial llamada index como
acción por defecto. Esto quiere decir que para una dirección URL como
http://localhost/zf-tutorial/news/ la acción index dentro del controlador news
será ejecutado. El controlador de Zend Framework’s también se reserva un controlador por
defecto en caso de no recibir alguno. No nos debería de sorprender que también se llama
index. Así que un URL como http://localhost/zf-tutorial/ ejecuta la acción
index dentro del controlador index.
Como este es un tutorial sencillo, no nos vamos a complicar la vida con un sistema
engorroso para acceder. Eso tendrá que esperar para otro tutorial aparte……
Como tenemos 4 paginas que están relacionadas a nuestros álbumes, vamos a agruparlos
dentro de un mismo controlador como cuatro acciones que serán:
Page Controller Action
Home page Index Index
Add New Album Index Add
Edit Album Index Edit
Delete Album Index Delete
Bonito y sencillo.
Configurando el Controlador (Controller).
Ahora estamos listos para configurar nuestro controlador. Dentro de Zend Framework, la
clase controlador se debe nombrar {Controller name}Controller. Hacemos hincapié
en que el nombre {Controller name} debe comenzar con mayúscula. Esta clase debe
residir en un archivo llamado {Controller name}Controller.php dentro del directorio
especificado como controllers. Otra vez, el nombre asignado a {Controller name}
debe comenzar con letra mayúscula y todas las demás letras minúsculas. Cada acción es
una función publica dentro de la clase del controlador, que debe ser nombrada
{action name}Action. En este caso {action name} debe de comenzar con una letra
minúscula.
Page 6 of 20
7. Entonces nuestra clase controlador se nombrara IndexController que esta definida
dentro de zf-tutorial/application/controllers/IndexController.php:
zf-tutorial/application/controllers/IndexController.php
<?php
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
echo quot;<p>in IndexController::indexAction()</p>quot;;
}
function addAction()
{
echo quot;<p>in IndexController::addAction()</p>quot;;
}
function editAction()
{
echo quot;<p>in IndexController::editAction()</p>quot;;
}
function deleteAction()
{
echo quot;<p>in IndexController::deleteAction()</p>quot;;
}
}
Inicialmente hemos asignado a cada controlador para que imprima su nombre. Pruébenlo,
navegando por las siguientes direcciones URL:
URL Displayed text
http://localhost/zf_tutorial/ in IndexController::indexAction()
http://localhost/zf_tutorial/index/add in IndexController::addAction()
http://localhost/zf_tutorial/index/edit in IndexController::editAction()
http://localhost/zf_tutorial/index/delete in IndexController::deleteAction()
Ahora ya contamos con un enrutador funcional, ya que cada acción se ejecuta para las
páginas asignadas de nuestra aplicación. Si esto no les esta funcionando, revisen la sección
de Troubleshooting al final de la documentación, para ver si eso les arregla el problema.
Ahora vamos a crear el view o vista de la aplicación.
Configuración de la Vista (view)
El componente view del Zend Framework, para nuestra sorpresa se llama Zend_View. El
componente view nos permitirá separar el código que muestra la pagina del código dentro
de las funciones de action.
El uso básico de Zend_View es:
$view = new Zend_View();
$view->setScriptPath('/path/to/view_files');
echo $view->render('view.php');
Se puede visualizar fácilmente que si ponemos esta estructura dentro de cada función de
acción (action), estaremos repitiendo el código de inicialización que es de poco interés
para la acción. Así que preferimos hacer la inicialización del view en otro sitio y acceder a
nuestro objeto previamente inicializado dentro de cada función action.
Los diseñadores de Zend Framework predijeron este tipo de problemas y dicha solución ya
esta desarrollada para nosotros dentro del Zend_Controller_Action. Existen dos funciones de
Page 7 of 20
8. ayuda que son: initView() y render(). La funcion initView() crea un objeto
Zend_View para nosotros y le asigna una propiedad $view, lista para que nosotros le
asignemos los datos necesarios. También inicializa el objeto Zend_View para que verifique
los scripts de view dentro del directorio views/scripts/{controller name} que van a ser
interpretados. La interpretación de los scripts view es llevada a cabo por medio de
render(), que por defecto ejecutara el script {action_name}.phtml y lo incorporara al
cuerpo del objeto Response. El objeto Response es utilizado para unir todas las cabeceras,
el contenido del cuerpo y las excepciones generadas como resultado del uso del sistema
MVC. El front controller envía automáticamente las cabeceras, seguidas por el contenido del
cuerpo al finalizar la llamada.
Para integrar la vista (view) a nuestra aplicación, debemos inicializarla en la función init()
y después asegurarnos de hacer una llamada a render() en cada acción (action). Vamos a
crear algunos archivos view para nuestro código de prueba.
Los siguientes cambios que haremos en IndexController (se encuentran en negritas).
Como se pueden dar cuenta, agregamos una nueva función init(), que es llamada
automáticamente para nosotros por el constructor Zend_Controller_Action’s. Esto nos
asegura que nuestro view será inicializado desde el principio y así podemos tener la certeza
que estará listo para ser utilizado por las funciones action.
zf-tutorial/application/controllers/IndexController.php
<?php
class IndexController extends Zend_Controller_Action
{
function init()
{
$this->initView();
}
function indexAction()
{
$this->view->title = quot;My Albumsquot;;
$this->render();
}
function addAction()
{
$this->view->title = quot;Add New Albumquot;;
$this->render();
}
function editAction()
{
$this->view->title = quot;Edit Albumquot;;
$this->render();
}
function deleteAction()
{
$this->view->title = quot;Delete Albumquot;;
$this->render();
}
}
En cada función se asigna una variable a la propiedad view, para después desplegar el
template de view mediante la llamada a render(). Haremos hincapié que en este punto
todavía no se ejecuta el despliegue del template, ya que esto lo hace el front controller justo
al final del proceso de la finalización de la llamada.
Ahora necesitamos agregar cuatro archivos view a nuestra aplicación. Estos archivos son
reconocidos como los templates y el metodo render() espera que cada template sea
Page 8 of 20
9. nombrado de igual manera que action y contenga la extensión .phtml que especifique que
es un archivo template. Dicho archivo se debe encontrar en el subdirectorio que se
identifique de igual manera que el controller, asi que los cuatro archivos son:
zf-tutorial/application/views/scripts/index/index.phtml
<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>
zf-tutorial/application/views/scripts/index/add.phtml
<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>
zf-tutorial/application/views/scripts/index/edit.phtml
<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>
zf-tutorial/application/views/scripts/index/delete.phtml
<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<h1><?php echo $this->escape($this->title); ?></h1>
</body>
</html>
Probando cada controller/action deberá desplegar cada titulo en negrita.
Código HTML común
Rápidamente se nos hace obvio que hay mucho código HTML en común en nuestros views.
Vamos a dividir este código común en dos archivos: header.phtml y footer.phtml dentro del
directorio scripts. Así los podemos utilizar para almacenar el código HTML común y
solamente hacer referencia desde los templates de view.
Estos nuevos archivos son:
zf-tutorial/application/views/scripts/header.phtml
<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;>
<html xmlns=quot;http://www.w3.org/1999/xhtmlquot; xml:lang=quot;enquot; lang=quot;enquot;>
<head>
<meta http-equiv=quot;Content-Typequot; content=quot;text/html;charset=utf-8quot; />
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<div id=quot;contentquot;>
Page 9 of 20
10. (Hemos modificado el código HTML para cumplir con las normas W3C!)
zf-tutorial/application/views/scripts/footer.phtml
</div>
</body>
</html>
De igual manera hay que modificar nuestros archivos view:
zf-tutorial/application/views/scripts/index/index.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('footer.phtml'); ?>
zf-tutorial/application/views/scripts/index/add.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('footer.phtml'); ?>
zf-tutorial/application/views/scripts/index/edit.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('footer.phtml'); ?>
zf-tutorial/application/views/scripts/index/delete.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('footer.phtml'); ?>
Estilos
Aunque solamente sea un tutorial, vamos a necesitar un archivo CSS (Cascading Style
Sheets) para hacer la aplicación un poco más presentable. Esto ocasiona un pequeño
inconveniente dado que actualmente no sabemos como hacer referencia al archivo CSS, ya
que la dirección URL no apunta al directorio raíz adecuado. Para solucionar esto utilizaremos
la funcion getBaseURL() que es parte de la petición, para pasárselo al view. Esto nos
provee el bit de la URL que no conocemos.
Modificamos (en negritas) el IndexController::init() de la siguiente manera:
zf-tutorial/application/controllers/IndexController.php
...
function init()
{
$this->initView();
$this->view->baseUrl = $this->_request->getBaseUrl();
}
...
Necesitamos agregar la ruta del archivo CSS a la sección <head> del archivo header.phtml:
zf-tutorial/application/views/scripts/header.phtml
...
<head>
<meta http-equiv=quot;Content-Typequot; content=quot;text/html;charset=utf-8quot; />
<title><?php echo $this->escape($this->title); ?></title>
<link rel=quot;stylesheetquot; type=quot;text/cssquot; media=quot;screenquot;
href=quot;<?php echo $this->baseUrl;?>/public/styles/site.cssquot; />
</head>
...
Page 10 of 20
11. Finalmente necesitamos agregar los estilos CSS:
zf-tutorial/public/styles/site.css
body,html {
font-size:100%;
margin: 0;
font-family: Verdana,Arial,Helvetica,sans-serif;
color: #000;
background-color: #fff;
}
h1 {
font-size:1.4em;
color: #800000;
background-color: transparent;
}
#content {
width: 770px;
margin: 0 auto;
}
label {
width: 100px;
display: block;
float: left;
}
#formbutton {
margin-left: 100px;
}
a {
color: #800000;
}
¡Esto debe hacerlo un poco más presentable!
La Base de Datos
Ahora que hemos separado el control de la aplicación del despliegue hecho por view, es
tiempo de echar un vistazo a la sección de model de nuestra aplicación. Hay que recordar
que la parte de model es la encargada de la base o las llamadas “Reglas de Negocio”, en
nuestro caso, esta se encarga de la base de datos. Vamos a hacer uso de la clase dentro de
Zend Framework denominada Zend_Db_Table que se utiliza para buscar, agregar,
modificar y eliminar registros de una base de datos.
Configuracion
Para utilizar Zend_Db_Table, debemos declarar cual base de datos utilizar, así como el
nombre de usuario y la contraseña. Como preferimos no codificar internamente esta
información en nuestra aplicación, vamos a hacer uso de un archivo de configuración para
gestionar dicha información.
Zend Framework nos provee de un objeto llamado Zend_Config para gestionar de manera
flexible y orientada a objetos todos los archivos de configuración que pueden ser archivos INI
o un archivo XML. Nosotros usaremos un archivo INI:
zf-tutorial/application/config.ini
[general]
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = rob
db.config.password = 123456
Page 11 of 20
12. db.config.dbname = zftest
¡Es obvio que ustedes deberán hacer uso de su propio username (nombre de usuario),
password (contraseña) y nombre de la base de datos, no los míos!
El uso de Zend_Config es muy sencillo:
$config = new Zend_Config_Ini('config.ini', 'section');
En nuestro caso, Zend_Config_Ini carga una sección del archivo INI, no todas las
secciones (aunque esto se puede llevar a cabo si lo desean). Ofrece soporte por medio de
anotaciones, para permitir cargar secciones adicionales. Zend_Config_Ini interpreta el
“punto” en cada parámetro como un delimitador jerárquico para permitir el agrupamiento de
parámetros de configuración relacionados. En nuestro archivo config.ini, los parámetros de
host, username, password y dbname estarán agrupados dentro de $config->db->config.
Vamos a cargar nuestra configuración en nuestro archivo de inicialización (bootstrap)
index.php:
Relevant part of zf-tutorial/index.php
...
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Registry');
// load configuration
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
// setup controller
...
Los cambios se encuentran en negritas. Hemos cargado las clases que vamos a utilizar
(Zend_Config_Ini y Zend_Registry) y después cargamos la sección “general” de
application/config.ini a nuestro objeto $config. Para finalizar asignamos a nuestro
registro el objeto $config para que pueda ser accesible de cualquier parte de nuestra
aplicación.
Nota: En esta aplicación no es necesario almacenar dentro de registry el objeto
$config, pero esto es una practica correcta ya que en una aplicación en producción será
necesario tener acceso a mas de una configuración de base de datos dentro del archivo INI.
También hay que estar conscientes que el registry se comporta como variables global y
genera dependencias entre objetos que no deberían de estar allí, si no se tiene cuidado
pueden darnos problemas.
Page 12 of 20
13. Configurando Zend_Db_Table
Para hacer uso de Zend_Db_Table, debemos señalarle la información de configuración que
hemos cargado. Esto se hace, creando una instancia de Zend_Db y después registrándola
con la función estática Zend_Db_Table:: setDefaultAdapter(). Esto se lleva a cabo
dentro del archive de inicialización del bootstrap (lo que se agrego esta en negritas):
Relevant part of zf-tutorial/index.php
...
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Config_Ini');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Db_Table');
// load configuration
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
// setup database
$db = Zend_Db::factory($config->db->adapter,
$config->db->config->asArray());
Zend_Db_Table::setDefaultAdapter($db);
// setup controller
...
Crear una Tabla
Vamos a utilizar MySQL, así que las sentencias SQL para crear la tabla son:
CREATE TABLE album (
id int(11) NOT NULL auto_increment,
artist varchar(100) NOT NULL,
title varchar(100) NOT NULL,
PRIMARY KEY (id)
)
Utiliza esta sentencia en un cliente MySQL como phpAdmin o mediante la línea de comandos
de MySQL.
Agregar estos Álbumes.
Vamos a insertar unos registros a la tabla, para realizar pruebas de la funcionalidad de
acceso a la información desde la pagina inicial (home). Vamos a tomar los primeros dos CD’s
del “Hot 100” de Amazon.co.uk:
INSERT INTO album (artist, title)
VALUES
('James Morrison', 'Undiscovered'),
('Snow Patrol', 'Eyes Open');
El Modelo (model)
Zend_Db_Table es una clase abstracta, así que debemos de proporcionar una descripción
específica para gestionar álbumes. No importa como llamemos a nuestra clase, pero es de
sentido común asignarle el nombre de la tabla de la base de datos. Así que nuestra clase se
llamara Album ya que nuestra tabla se llama album. Se le va indicar el nombre de la tabla a
Zend_Db_Table para que la gestione, debemos de proteger el nombre de la tabla utilizando
la propiedad $_name. Zend_Db_Table asume que la tabla tiene una llave primaria que tiene
habilitada la opción de auto-increment. El nombre de este campo puede ser modificado si así
se desea.
Page 13 of 20
14. Vamos a almacenar la tabla Album en el directorio de models:
zf-tutorial/application/models/Album.php
<?php
class Album extends Zend_Db_Table
{
protected $_name = 'album';
}
¡¿Esto no es complicado verdad?! Afortunadamente para nosotros los requisitos son
sencillos, ya Zend_Db_Table resuelve toda la funcionalidad que necesitamos. Sin embargo
si necesitas agregar mayor funcionalidad a model, entonces este es el lugar adecuado para
ponerlo. Por lo general, alguna de las funcionalidades extras será específica de los métodos
de búsqueda para encontrar algún tipo de dato que se requiera. También podemos pedirle
información relacionada de varias tablas a Zend_Db_Table para que encuentre los datos
solicitados.
Listado de los Álbumes
Ahora que hemos inicializado la configuración y la información de la base de datos, podemos
entrar de lleno al código de la aplicación y mostrar el listado de los CD’s. Lo cual lo llevamos
a cargo de la clase IndexController.
Esta muy claro que cada acción (action)dentro del IndexController estara
manipulando la base de datos de album por medio de la clase Album, así que cargaremos la
clase album cuando inicializamos el controlador (controller). A través de la función
init():
zf-tutorial/application/controllers /IndexController.php
...
function init()
{
$this->initView();
$this->view->baseUrl = $this->_request->getBaseUrl();
Zend_Loader::loadClass('Album');
}
...
Nota: Esto es un ejemplo de una implementación de Zend_Loader::loadClass() para
cargar nuestras propias clases, funciona correctamente por que hemos incluido la ruta de
nuestro directorio de models dentro del archivo index.php.
Vamos a mostrar la lista de nuestros álbumes en una tabla dentro de indexAction():
zf-tutorial/application/controllers/IndexController.php
...
function indexAction()
{
$this->view->title = quot;My Albumsquot;;
$album = new Album();
$this->view->albums = $album->fetchAll();
$this->render();
}
...
La función Zend_Db_Table::fetchAll() nos regresa un Zend_Db_Table_Rowset que
nos permitirá interactuar con los registros plasmados en el template de nuestro archivo view:
Page 14 of 20
15. zf-tutorial/application/views/scripts/index/index.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<p><a href=quot;<?php echo $this->baseUrl; ?>/index/addquot;>Add new album</a></p>
<table>
<tr>
<th>Title</th>
<th>Artist</th>
<th> </th>
</tr>
<?php foreach($this->albums as $album) : ?>
<tr>
<td><?php echo $this->escape($album->title);?></td>
<td><?php echo $this->escape($album->artist);?></td>
<td>
<a href=quot;<?php echo $this->baseUrl; ?>/index/edit/id/<?php
echo $album->id;?>quot;>Edit</a>
<a href=quot;<?php echo $this->baseUrl; ?>/index/delete/id/<?php
echo $album->id;?>quot;>Delete</a>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php echo $this->render('footer.phtml'); ?>
Si nos dirigimos a esta dirección http://localhost/zf-tutorial/ (o cualquier ruta que hayan
decidido) debe de mostrarnos una lista de dos álbumes.
Agregar nuevos Álbumes
Ahora podemos codificar la funcionalidad necesaria para agregar nuevos álbumes. Lo cual
se puede dividir en dos partes:
• Mostrar al usuario una forma con los detalles.
• Procesar el envió de la forma y almacenar la información en la base de datos.
Todo esto se realiza dentro de addAction():
zf-tutorial/application/controllers/IndexController.php
...
function addAction()
{
$this->view->title = quot;Add New Albumquot;;
if ($this->_request->isPost()) {
Zend_Loader::loadClass('Zend_Filter_StripTags');
$filter = new Zend_Filter_StripTags();
$artist = $filter->filter($this->_request->getPost('artist'));
$artist = trim($artist);
$title = trim($filter->filter($this->_request->getPost('title')));
if ($artist != '' && $title != '') {
$data = array(
'artist' => $artist,
'title' => $title,
);
$album = new Album();
$album->insert($data);
$this->_redirect('/');
return;
}
}
// set up an quot;emptyquot; album
Page 15 of 20
16. $this->view->album = new stdClass();
$this->view->album->id = null;
$this->view->album->artist = '';
$this->view->album->title = '';
// additional view fields required by form
$this->view->action = 'add';
$this->view->buttonText = 'Add';
$this->render();
}
...
Hay que observar como se analiza la variable $_SERVER['REQUEST_METHOD'] para
verificar que la forma haya sido enviada. Si se ha enviado, extraemos “artist” y “title” del
arreglo post por medio de la clase Zend_Filter_StripTags, para asegurarnos que
ningún código HTML sea permitido. Despues asumimos que se han llenado los campos
correspondientes, hacemos uso de la clase Album(), para registrarlos en la base de datos.
Después de agregar el nuevo registro, los redirigimos a la raíz de la aplicación con el método
_redirect().
Para finalizar configuramos el view con el template adecuado para la forma.
Adelantándonos un poco, podemos visualizar que la forma edit action será similar a esta,
por eso utilizaremos un mismo template (_form.phtml) que será llamado de add.phtml y
edit.phtml:
Los templates para agregar un álbum son:
zf-tutorial/application/views/scripts/index/add.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('index/_form.phtml'); ?>
<?php echo $this->render('footer.phtml'); ?>
zf-tutorial/application/views/scripts/index/_form.phtml
<form action=quot;<?php echo $this->baseUrl ?>/index/<?php
echo $this->action; ?>quot; method=quot;postquot;>
<div>
<label for=quot;artistquot;>Artist</label>
<input type=quot;textquot; name=quot;artistquot;
value=quot;<?php echo $this->escape(trim($this->album->artist));?>quot;/>
</div>
<div>
<label for=quot;titlequot;>Title</label>
<input type=quot;textquot; name=quot;titlequot;
value=quot;<?php echo $this->escape($this->album->title);?>quot;/>
</div>
<div id=quot;formbuttonquot;>
<input type=quot;hiddenquot; name=quot;idquot; value=quot;<?php echo $this->album->id; ?>quot; />
<input type=quot;submitquot; name=quot;addquot;
value=quot;<?php echo $this->escape($this->buttonText); ?>quot; />
</div>
</form>
Esto es código muy sencillo. Como nuestra intención es utilizar _form.phtml para modificar
los registros también (edit action), hemos utilizado la variable $this->action en lugar de
codificar el atributo action internamente. También hacemos uso de una variable para
mostrar el nombre del botón de submit.
Page 16 of 20
17. Modificar un Álbum
Modificar un álbum es casi idéntico que agregarlo, así que el código es similar:
zf-tutorial/application/controllers/IndexController.php
...
function editAction()
{
$this->view->title = quot;Edit Albumquot;;
$album = new Album();
if ($this->_request->isPost()) {
Zend_Loader::loadClass('Zend_Filter_StripTags');
$filter = new Zend_Filter_StripTags();
$id = (int)$this->_request->getPost('id');
$artist = $filter->filter($this->_request->getPost('artist'));
$artist = trim($artist);
$title = trim($filter->filter($this->_request->getPost('title')));
if ($id !== false) {
if ($artist != '' && $title != '') {
$data = array(
'artist' => $artist,
'title' => $title,
);
$where = 'id = ' . $id;
$album->update($data, $where);
$this->_redirect('/');
return;
} else {
$this->view->album = $album->fetchRow('id='.$id);
}
}
} else {
// album id should be $params['id']
$id = (int)$this->_request->getParam('id', 0);
if ($id > 0) {
$this->view->album = $album->fetchRow('id='.$id);
}
}
// additional view fields required by form
$this->view->action = 'edit';
$this->view->buttonText = 'Update';
$this->render();
}
...
Hay que hacer distinción que cuando la forma no se encuentra en modo “post” tomamos de
la petición el parámetro id a través de la propiedad params de la función getParam().
El template es:
zf-tutorial/application/views/scripts/index/edit.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php echo $this->render('index/_form.phtml'); ?>
<?php echo $this->render('footer.phtml'); ?>
Page 17 of 20
18. Refactorizar!
No se nos debería escapar de nuestra atención que AddAction() y EditAction() son muy
similares, también son idénticos sus templates. ¡Por eso es aconsejable refactorizarlos!
Esto se los dejo como ejercicio para ti, nuestro amable lector…
Eliminar un Album
Para terminar nuestra aplicación debemos de añadir la eliminación de registros. Tenemos un
enlace “Delete” junto a cada registro de nuestra lista, seria muy ingenuo de nuestra parte si
se eliminara al hacer click en dicho enlace. Esto seria erróneo. Si recordamos las
especificaciones HTML, podemos recordar que no debemos llevar acabo una acción
irreversible con GET y que debemos hacer uso de POST. El Acelerador Beta de Google
reintrodujo este punto a muchas personas.
Debemos mostrar una forma de confirmación cuando el usuario realice clic en “Delete” y
después presionan el botón de “Yes”, llevamos a cabo la eliminación.
El código se asemeja al action de “edit” y “add”:
zf-tutorial/application/controllers/IndexController.php
...
function deleteAction()
{
$this->view->title = quot;Delete Albumquot;;
$album = new Album();
if ($this->_request->isPost()) {
Zend_Loader::loadClass('Zend_Filter_Alpha');
$filter = new Zend_Filter_Alpha();
$id = (int)$this->_request->getPost('id');
$del = $filter->filter($this->_request->getPost('del'));
if ($del == 'Yes' && $id > 0) {
$where = 'id = ' . $id;
$rows_affected = $album->delete($where);
}
} else {
$id = (int)$this->_request->getParam('id');
if ($id > 0) {
// only render if we have an id and can find the album.
$this->view->album = $album->fetchRow('id='.$id);
if ($this->view->album->id > 0) {
$this->render();
return;
}
}
}
// redirect back to the album list unless we have rendered the view
$this->_redirect('/');
}
...
Volvemos a utilizar la misma metodología para revisar el método de petición (request), para
reconocer que forma mostrar, si la de confirmación o la de eliminación, por medio de la clase
Album(). De igual manera que “insert” y “update”, se elimina el registro por medio de una
llamada a Zend_Db_Table::delete().
Page 18 of 20
19. Hay que hacer nota, que hacemos un “return” después de establecer la respuesta del “body”.
Esto se hace con fin de poder redirigirnos de vuelta al listado de los álbumes al final de la
función. De tal manera que si alguno de nuestros filtros falla, nos dirige a la lista sin
necesidad de llamar varias veces dentro de la función al método _redirect().
El template es una forma sencilla:
zf-tutorial/application/views/scripts/indexindex/Delete.phtml
<?php echo $this->render('header.phtml'); ?>
<h1><?php echo $this->escape($this->title); ?></h1>
<?php if ($this->album) :?>
<form action=quot;<?php echo $this->baseUrl ?>/index/deletequot; method=quot;postquot;>
<p>Are you sure that you want to delete
'<?php echo $this->escape($this->album->title); ?>' by
'<?php echo $this->escape($this->album->artist); ?>'?
</p>
<div>
<input type=quot;hiddenquot; name=quot;idquot; value=quot;<?php echo $this->album->id; ?>quot; />
<input type=quot;submitquot; name=quot;delquot; value=quot;Yesquot; />
<input type=quot;submitquot; name=quot;delquot; value=quot;Noquot; />
</div>
</form>
<?php else: ?>
<p>Cannot find album.</p>
<?php endif;?>
<?php echo $this->render('footer.phtml'); ?>
Troubleshooting
Si estas teniendo problemas para implementar cualquier action que no sea index/index, lo
mas seguro es que el archivo enrutador (router) no puede determinar cual es el subdirectorio
de tu sitio Web. Mis investigaciones hasta el momento, apuntan a que esto ocurre cuando la
dirección URL de tu sitio Web difiere de la ruta del directorio raíz del web-root.
Si el código fuente no te funciona, entonces deberías configurar $baseURL con los valores
correctos de tu servidor:
zf-tutorial/index.php
...
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setBaseUrl('/mysubdir/zf-tutorial');
$frontController->setControllerDirectory('./application/controllers');
...
Necesitaras reemplazar la ruta siguiente '/mysubdir/zf-tutorial/' con la dirección
URL correcta dentro de index.php. Por ejemplo, si el URL de index.php es
http://localhost/~ralle/zf_tutorial/index.php el valor correcto para $baseUrl sera
'/~ralle/zf_tutorial/'.
Conclusión
Aquí concluimos esta breve reseña en el desarrollo de una aplicación MVC funcional, por
medio de Zend FrameWork. Espero que lo hayan encontrado interesante e informativo. Si
encuentran algún error, por favor hacerlo de mi conocimiento escribiendo a
rob@akrabat.com.
Nota: El idioma del autor es ingles, si tienen alguna duda o comentario que quieran hacer de
la traducción o del tutorial en castellano por favor manden un correo a
ccossio@ajaxcode.net.
Page 19 of 20
20. Este tutorial solo ha tocado lo básico del uso de Zend FrameWork, hay mas clases que
explorar, deberían echar un vistazo al manual (http://framework.zend.com/manual), así como
al wiki (http://framework.zend.com/wiki). También si están interesados en el desarrollo del
framework es aconsejable echar una hojeada al development wiki
(http://framework.zend.com/developer).
Page 20 of 20