Zend Frewmork 2 (ZF2) ya se alista para salir muy pronto, viene cargado de muchas mejoras y novedades, va ser un cambio grande con respecto a la versión uno, usará toda la potencia del php 5.3 , bueno ya habrá tiempo de hablar de lo nuevo, por ahora vamos hacer el famoso “Hola Mundo”.
Requerimientos
- PHP 5.3.3 (o superior)
- Un servidor web que tenga habilitada la extensión mod_rewrite o parecido
Notas Previas
Voy a suponer que tienes configurado correctamente el apache y que sabes crear host virtuales, caso contrario en la red puedes encontrar un sin fin de guías de como hacerlo.
Instalación
Hay 2 formas de obtener los archivos para crear un proyecto, pude ser usando git o hacerlo manualmente descargando los archivos .zip. Trataremos de hacerlo de las 2 maneras:
PASO 1: Instalando usando GIT y Composer
- Nos colocamos dentro del directorio donde deseamos crear nuestra aplicación
cd /www/projects/
- Obtenemos el ZendSkeletonApplication el cual nos brinda una estructura base para comenzar nuestro proyecto
git clone git://github.com/zendframework/ZendSkeletonApplication.git
Esto creará una carpeta llamada
ZendSkeletonApplication
el cual lo renombraremos azf2
(o como mejor les guste). - Si todo fue bien nuestro directorio será parecido a esto:
- Nos colocamos dentro de la carpeta
zf2
cd /www/projects/zf2/
- Actualizamos el instalador
php composer.phar self-update
- Instalamos la biblioteca ZF2, esto puede tomar su tiempo según la conexión que tengas, ya que descargará todos los archivos del repositorio central.
php composer.phar install
- Si todo salio bien bien creará dos carpetas dentro de
vendor
llamadaszendframework/zendframework/library/Zend
que contiene la biblioteca de ZF2 ycomposer
el cual contiene los archivos necesarios para que nuestra aplicación funcione con ZF2
Movemos la carpetalibrary
ubicada envendor/zendframework/zendframework/library
avendor/ZF2
y quedaría así
Con esto ya estamos listo para ir al siguiente paso!!!!
PASO 2: Configurando el Virtual Host
[bash]
ServerName zf2.gn
DocumentRoot /www/projects/zf2/public
SetEnv APPLICATION_ENV “development”
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
[/bash]
PASO 3: Verificando la Instalación
- Si hiciste todo bien debería salir una pantalla igual a esto
- Ahora probamos que funcione nuestro archivo
.htaccess
, para eso ingresamos la siguiente url:http://zf2.gn/1234
y nos debe mostrar lo siguiente
PASO 4 : Creando Hola Mundo!!!
- Editamos el
IndexController
ubicado enzf2/module/Application/src/Application/Controller
y le agregamos unAction
[php]
- Crearemos un archivo llamado
holamundo.phtml
dentro dezf2/module/Application/view/application/index/
el cual sera la vista deholamundoAction
[php]
//imprimimos el mensaje
- Ingresamos a la siguiente url
http://zf2.gn/application/index/holamundo
y nos mostrará esta pantalla!!
Instalando Manualmente
El proceso es muy simple y muy parecido a lo anterior
-
Nos colocamos dentro del directorio donde deseamos crear nuestra aplicación
cd /www/projects/
y descargamos elZendSkeletonApplication.zip
desde https://github.com/zendframework/ZendSkeletonApplication , lo descomprimimos y lo re-nombramos azf2
-
Descargamos las bibliotecas de
ZF2
desde https://github.com/zendframework/zf2 los descomprimimos y copiamos la carpetalibrary
azf2/vendor/ZF2
- Seguimos el PASO 2, PASO 3 y PASO 4 y quedaría listo para usar
Vieron que es super sencillo, espero sus comentarios y que les sea de utilidad.
Actualizado el 28 de Agosto, corrigiendo un pequeño bug
¿Es necesario mover la carpeta library a vendor/ZF2? No debería el autolader funcionar sin tener que hacer ese paso? Entiendo que ZF2 es compatible con psr-0 y composer deja bien en autoloader. Me lo apunto para probarlo de todas formas
Gonzalo Pues tienes toda la razón, las dependencias se generan solas, y funciona sin problemas, al parecer hubo un pequeño bug en mi instalación, ya me parecía raro, lo voy a corregir, gracias por el feedback
Hola gente! Sabéis cómo puedo añadir la libreria de ZF2 al Zend Studio 9? Actualmente he logrado añadir la versión 1.12 pero no hay manera de que me reconozca los archivos que descargo (ni “full” ni “minimal installation”) como una instalación válida de Zend Framework.
Gracias!
Hola Manuel
Hace mucho que no uso Zend Studio, pero antes agregaba las librerías manualmente
Aquí te paso unas indicaciones de como añadir una librería externa.
1. Go to Window | Preferences | PHP | PHP Libraries.
2. In the PHP Libraries Preferences page click New.
The “New User Library” Dialog will open.
3. In the “New User Library” dialog, enter the name of your user library
4. Select the “Add to environment” checkbox if you would like this library to be added to your entire environment instead of a specific project.
5. To apply changes click OK.
Recuerda que ZF2 funciona con la version 5.3 de PHP
Hola! muchas gracias por el articulo está fenomenal!
sabes por que para acceder a un Action en este caso el Holamundo se debe poner application?
-> http://zf2.gn/application/index/holamundo en ZF1 solo con poner -> http://zf2.gn/index/holamundo funciona. esto se debe a que ya trabaja con módulos de forma mas explicita? entonces si quiero cambiar applicaton (por que se ve mal) solo debo cambiar el nombre del modulo y en el load vdd? de antemano gracias por que me salvaste je yo no podía hacer el hola mundo, por que lo hacia de la forma tradicional -> http://zf2.gn/index/holamundo y con tu ejemplo quedo perfecto, solo había que agregar el modulo (en este caso appliation)
Froylan
Es muy recomendable usar el módulo application para las funciones propios del sistema, las demás funcionalidades es mejor agregarles en otros módulos.
Pero si deseas tenerlo como en ZF1 –>http://zf2.gn/index/holamundo puedes hacer lo siguiente dentro del archivo module.config.php:
[php highlight=”4,16″]
‘application’ => array(
‘type’ => ‘Literal’,
‘options’ => array(
‘route’ => ‘/’, // esta linea lo dejas solo con un /
‘defaults’ => array(
‘__NAMESPACE__’ => ‘Application\Controller’,
‘controller’ => ‘Index’,
‘action’ => ‘index’,
),
),
‘may_terminate’ => true,
‘child_routes’ => array(
‘default’ => array(
‘type’ => ‘Segment’,
‘options’ => array(
‘route’ => ‘[:controller[/:action]]’, // esta linea quitas el / que esta al principio
‘constraints’ => array(
‘controller’ => ‘[a-zA-Z][a-zA-Z0-9_-]*’,
‘action’ => ‘[a-zA-Z][a-zA-Z0-9_-]*’,
),
‘defaults’ => array(),
),
),
[/php]
Espero que te sea de utilidad
Saludos!
Muchas gracias! por la información ya le voy entendiendo más jeje seguire tu consejo de ocupar el módulo application. Gracias .