Zend framework 2 es el framework de los creadores del núcleo de PHP (Zend); la versión 2 de este popular framework refleja los cambios introducidos en PHP 5.3 como son los espacios de nombres (namespaces), closures y un mejor uso de la Programación Orientada a Objetos; así como de los patrones de diseño.
El objetivo de Zend Framework 2 es apoyar al programador en el desarrollo de aplicaciones web empresariales y complejas.
Zend Framework 2 puede ser usado para el desarrollo de aplicaciones de cualquier tamaño; por tanto su uso no es tan sencillo como otros frameworks; como Code Igniter o Cake PHP. Zend Framework 2 fue publicado en setiembre de este año y en el corto periodo que tiene ha generado gran espectativa en la comunidad de desarrolladores de PHP y de aquellos que han estado trabajando con ZendFramework.
2.- Características Nuevas
Zend Framework 2 fue desarrollado con la idea de mejorar el framework; adaptándolo a la evolución del lenguaje y tomando las mejores ideas de los frameworks de desarrollo; el resultado fue un framework moderno y muy fexible que brinda al programador característica muy importantes para el desarrollo de aplicaciones empresariales. Las principales novedades de Zend 2 respecto a la versión anterior son las siguientes:
- Desarrollo basado en Pruebas Unitarias con PHPUnit
- Un nuevo sistema de módulos para organizar el código
- Una nueva arquitectura basada en servicios mediante Inyección de Dependencias
- Un gestor de eventos para olvidarse de los hooks y poder ejecutar código propio en cualquier punto de la ejecución de las aplicaciones
3.- Instalación de Zend Framework
3.1.- Pre Requisitos
Zend Framework 2 requiere una adecuada compresión y uso de la Programación Orientada a Objetos de PHP, así como de Apache; en cuanto al uso de VirtualHost, mod_rewrite, y los archivos .htaccess; y del manejo de un servidor de base de datos (MySQL). Con la finalidad de comprender un entorno de desarrollo profesional; aparte de los requisitos mencionados, usaremos Ubuntu Linux como Sistema Operativo para el servidor y desplegaremos el primer hola mundo en el Framework.
3.2.- Instalación de Ubuntu Linux
Podemos instalar Ubuntu Linux de manera física en una máquina virtual; para quienes tengan instalada una máquina física con Ubuntu pueden obviar este paso y para quienes solo tengan Windows, pueden instalarlo fácilmente con Virtualbox
3.2.1.- Instalación de VirtualBox
Descargamos VirtualBox para widows de http://www.virtualbox.org y lo instalamos
3.2.2.- Instalación de Ubuntu Linux en una Máquina Virtual de VirtualBox
- Le damos click al icono de Nueva y le damos nombre a la máquina virtual "Ubuntu LAMP Server", se va seleccionar Tipo: Linux Versión: Ubuntu
- Seleccionamos 1024MB de RAM para la nueva máquina Virtual
- Creamos una nueva unidad de disco duro de y seleccionamos "Crear un disco Virtual Ahora" - Tipo de unidad de disco duro: VDI - Reservado Dinámicamente - Ubicación y Tamaño por defecto se guarda en la carpeta VirtualBox VMs en la carpeta del usuario; - tamaño 6GB - Crear
- Ahora le damos click en Configuración - Seleccionamos Red y elejimos Adaptador Puente Nombre: Poner la tarjeta de Red - Dar click en Almacenamiento y donde dice a la derecha Unidad CD/DVD dar click al ícono de CD y seleccionar la unidad de CD donde está el disco instalador de Ubuntu; tambien se puede seleccionar el archivo iso; luego dar clik en Aceptar - Dar click en la flecha verde "Iniciar" para arrancar la máquina virtual
- Ahora iniciará el CD de Ubuntu; despues de un momento nos saldrá un diálogo para
- elegir el idioma y a la izquierda le damos click en "Instalar Ubuntu", le damos
- click en "Continuar"
- Borrar el disco e Instalar Ubuntu
- Instalar Ahora
- Donde se Encuentra "Lima"
- Distribución del Teclado "Español Latinoamericano"
- ¿Quién es Usted?
Su nombre: alumno
El nombre de su equipo: serverlamp
Nombre de usuario: alumno
Contraseña: alumno
Confirme su Contraseña: alumno
Al final de la instalación nos pide Reiniciar
- Podemos hacer la instalación con la pantalla completa
- Para sacar el puntero del mouse de la máquina virtual, presionar el ctrl de la derecha
- Si se demora en "Descargar fichero" o en "Descargar paquetes de idioma" dar click en la flecha de despliegue y luego "skip"
3.2.3.- Configuracion de la Red
Para nuestro curso usaremos una red hipotética 192.168.1.0/24 con asignación de IP de nuestro equipo linux 192.168.1.10, router 192.168.1.1 y DNS 8.8.8.8
- Dar click a las flechas opuestas que está en la barra superior y elegir "Editar las conexiones"
- Seleccionar Conexión Cableada 1 y click en Editar
- Pestaña "Ajustes Ipv4"
- Método manual
- click en añadir:
Dirección: 192.168.1.10
Mascara de Red: 24
Puerta de Enlace: 192.168.1.1
Servidores DNS: 8.8.8.8
Guardar y Cerrar.
3.3.- Instalación de SSH, Apache, PHP y MySQL
- Dar click en el icono Ubuntu y escribir en la barra de comandos terminal
- La terminal de Linux nos permite ejecutar comandos para administrar el sistema operativo; al abrir la terminal iniciamos con el usuario alumno
- Para loguearnos como root (el superusuario de Linux) ejecutamos:
$> sudo su - clave: alumno
- Actualizamos la lista de paquetes instalables
$> apt-get update- Ahora instalamos el servidor SSH para poder administrar remotamente nuestro servidor
$> apt-get -y install ssh- Ahora para probar la conexión desde windows descargamos el programa putty http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html descargar el archivo putty.exe, ejecutarlo y conectarse al IP del servidor linux
usar el usuario: alumno clave: alumno
3.3.1.- Instalación de PHP, MySQL y Apache (Entorno de Desarrollo)
$> sudo su -
$> apt-get update
$> apt-get install php5 apache2 php5-cli \
php5-xdebug php5-mysql mysql-server \
php5-mcrypt php5-gd php5-memcache php-pear
Reiniciamos apache
$> /etc/init.d/apache2 restart
Nos pide una contraseña para el root de Mysql
clave: alumno
desde windows abrir el navegador y entrar a la IP del servidor
3.4.- Comandos básicos para trabajar con archivos y directorios En linux existe solo un directorio princiapl raiz / y en el cual se encuentran todos los demas directorios, Ej: el DOCUMENT_ROOT (raiz de pàginas web) se encuentra en /var/www la base de datos se encuentra en /var/lib/mysql los archivos de configuración de apache se encuentran en /etc/apache2 Nos logueamos como root
$> sudo su -
Comando cd
Nos sirve para movernos por los directorios Ej:
$> cd /var/www $> cd /etc/apache2 $> cd conf.d
Comando pwd
Nos dice en que directorio nos encontramos Ej:
$> cd /var/www $> cd pwd
Comando ls
Nos sirve para listar los archivos y directorios
Ej:
$> cd /var/www $> ls - Listar en columnas y detalles Ej: $> ls -l (lista el directorio actual) $> ls -l / (lista los directorios del raiz) $> ls /etc/apache2/conf.d (lista el directorio /etc/apache2/conf.d )
Comando mkdir
Nos sirve para crear directorios
Ej:
$> cd /var/www $> mkdir images $> mkdir js $> mkdir css
Comando nano nano es un editor sencillo para crear archivos
Ej:
$> cd /var/www $> nano index.php
<?php
echo "<h1>hola mundo</h1>";
?>
ctrl + o --> grabar
ctrl + x --> salir
Desde windows entrar a la IP del servidor con el navegador
http://192.168.1.10
Comando cp
Nos sirve para crear archivos y directorios
Ej:
$> cd /var/www $> cp index.php saludo.php (copia un archivo)Desde windows entrar a la IP del servidor con el navegador http://192.168.1.10/saludo.php
$> cp -R images imagenes (copia un directorio) $> ls -l /var/www
Comando mv
Nos sirve para renombrar y mover archivos y directorios
Ej:
$> cd /var/www $> mv js javascript (renombrando el directorio js a javascript) $> ls $> mkdir banners $> mv banners images/ (moviendo el directorio banners a images)
3.5 El editor vim
El editor vim es el editor más común en las plataformas unix; su resaltado de syntaxis nos ayuda con los archivos de configuración
Comandos del Editor VIM
ESC : ingresa al modo comando
i : entra en modo insercion desde la misma linea
o : entra en modo insercion desde la sgte linea
1G : va a la primera linea
23G : va a la linea 23
:45 : va a la linea 45
G : va a la ultima linea
/palabra : busca una cadena
n : sigue buscando
dd : corta o borra una linea
d8d : corta o borra 8 lineas
yy : copia una linea
y7y : copia 7 lineas
p : pega el contenido del portapapel
5p : pega 5 veces el contenido del portapapel
u : deshace la ultima accion
ctrl+r : rehace la ultima accion
x : borra una letra
:w : graba el archivo actual
:wq : graba y sale
:w! : graba de forma forzada
:wq! : graba y sale forzadamente
:q! : sale forzadamente
:1,$s/busqueda/reemplaza/g :busca una cadena y la reemplaza
:! comando : ejecuta un comando en bash y vuelve a VIM
:e archivo : abre un nueva archivo en el sgte buffer
:b1 : va el primer buffer abierto
:b2 : va al segundo buffer, para cambiar de buffer hay que grabar el buffer actual
:set number : muestra los numeros de linea
:set nonumber : quita los numeros de linea
:set paste : habilita el pegado sin auto identificacion
:set ts=3 : establece a 3 los espacios de los tabs
Insertar : entra en modo de reemplazo
:saveas archivo : guarda como nombre archivo
:shitf+a : entra en modo insercion al final dpel
D : elimina texto desde el cursor actual hasta el final de la linea
dG : elimina todo hasta la ultima linea
:wq! ++utf8 : guarda el fichero en modo UTFP (por defecto)
:nohl : cancela los resultados de busqueda
Instalación de VIM
$> sudo su - $> apt-get -y install vim
Ejercicio 1: Crear archivo poema
$> vim poema i -----> Inserta texto Oh gran Linux que quita la ignorancia en mi vida, a ti te consagro mi aprendizaje. ESC ----> Lleva al modo comando :wq ----> graba y sale $> cat poema Gestion de temporales de vim $> vim poema (agregar al final) G ----> van a la última línea o ----> modo inserción en una nueva línea Prometo alejarme del maligno windows Cerrar a la mala dando click en la X de la ventana del terminal $> vim poema Sale el mensaje de alerta el temporal y puede elegir entre estas opciones [A]brir para lectura únicamente, (E)ditar de todas formas, (R)ecuperar, (B)orrar(S)alir, (A)bortar: Seleccionamos "r" y le damos enter i -----> insetar texto desde mañana ESC -----> volver al modo comando :wq! -----> grabar y salir forzadamente Borrar el temporal $> rm -f .poema.swp
Ejercicio2:
Crear archivo saludo y ejecutar ejercicios de comandos vim
$> vim saludo
i
hola mundo
ESC
yy
20p
G
o
windows es lo maximo
ESC
/hola
n
n
:set number
G
yy
30p
:1,$s/windows/linux/g
dd
45G
d2d
dG
u
ctrl+R
:! date
:w
:e otrosaludo
:b1
1G
yG
:b2
p
:wq!
$> cat saludo (muestra el contenido del archivo)
$> cat otrosaludo
Archivo de configuracion de VIM
$> vim /etc/vim/vimrc
36G ---> ir a la linea 36
borrar la comilla inicial de las siguientes 3 lineas de la 36 a la 38
G ---> ir a la última línea
o
set nobackup
set number
set ts=4
set paste
ESC :wq
$> vim /etc/vim/vimrc
ESC:q
4.- Instalación de ZendFramework 2
Una vez que ya tenemos nuestro entorno LAMP, vamos a configurar un primer proyecto con Zend Framework 2
4.1.- Prerequisitos
1.- Primero necesitamos habilitar el módulo mod_rewrite en Apache y permitir el uso de .htaccess en los directorios
2.- Instalar composer
3.- Crear el proyecto de Zend Framework 2 con Composer
4.1.1 .- Habilitando mod_rewrite en Apache
$> sudo su - $> cd /etc/apache2/mods-enabled $> ln -s ../mods-available/rewrite.load $> /etc/init.d/apache2 restart4.1.2.- Instalando Composer (Gestor de dependencias de librerías)
$> sudo su - Primero instalamos curl (comando para descargar archivos) $> apt-get install curl Ahora instalaremos git (sistema de control de versiones distribuido) $> apt-get install git Descargamos composer y lo movemos al /usr/bin para ejecutarlo en cualquier directorio $> curl -s https://getcomposer.org/installer | php -- $> mv composer.phar /usr/bin Nota: si nos sale un mensaje de warning de timezone en php $> vim /etc/php5/cli/php.ini (archivo de configuración para consola) 960: date.timezone = America/Lima $> vim /etc/php5/apache2/php.ini (archivo de configuración para web) 960: date.timezone = America/Lima4.1.3 .- Creando el proyecto de Zend Framework 2
Con composer crearemos el proyecto zftest en el directorio /var/www/zftest
Esto nos creará el proyecto y nos descargará el ZendFramework2
$> composer.phar create-project -s dev \ --repository-url="http://packages.zendframework.com" \ zendframework/skeleton-application /var/www/zftest
4.l.4.- Editando el VirtualHost
para hacer que el directorio /var/www/zftest/public sea el raíz
Reemplazamos todo el contenido existente
$> vim /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/zftest/public
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/zftest/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Ahora reiniciamos apache y accedemos al proyecto desde el navegador http://localhost
$> /etc/init.d/apache2 restart
Para verificar que el archivo .htaccess está funcionando, navegamos a http://localhost/loquesea y debería saler un error 404 con el logo de ZF
Finalmente editaremos la vista del Módulo Application, Controlador Index, Action Index
Reemplazando todo el contenido
$> vim /var/www/zftest/module/Application/view/application/index/index.phtml
<h1> Hola Mundo desde Zend Framework 2 </h1>
Entramos con el navegador a http://localhost y veremos el mensaje del hola mundo5.- Herramienta de Depuración de PHP
Xdebug es una extensión para depurar errores en php, para poder configurarlo
instalamos la extensión php5-xdebug
$> apt-get install php5-xdebug
Activamos Xdebug (verificar la carpeta donde se encuentra la extension xdebug.so)
$> vim /etc/php5/conf.d/xdebug.ini xdebug.ion=/usr/lib/php5/20100525/xdebug.so xdebug.remote_enable=1 xdebug.remote_host="127.0.0.1" xdebug.remote_port=9000 xdebug.remote_handler="dbgp" xdebug.remote_mode=req xdebug.profiler_enable=1 xdebug.profiler_output_dir="/tmp/xprofile/" xdebug.collect_params=On xdebug.show_local_vars=On Activamos la visualización de error en formato html para poder depurarlos efectivamente $> vim /etc/php5/apache2/php.ini display_errors=On html_errors = On $> vim /etc/php5/cli/php.ini display_errors=On $> /etc/init.d/apache2 restart
No hay comentarios.:
Publicar un comentario