Phalcon es un framework full stack para el desarrollo de aplicaciones complejas.
Cuenta con los siguientes módulos y funcionalidades:
- Desarrollo con uso de PHP 5.3 y namespaces
- Patrón de arquitectura MVC para el desarrollo de aplicaciones (Módulo Simple, Multi Módulos y Micro Aplicaciones)
- Motor de ORM (Transacciones, Comportamientos, Relaciones, PHQL, Eventos, Validaciones, Hydration, Logging, Profiling, Sharding)
- Motor de ODM ( Mongo DB)
- Encriptación
- HTTP Request/Response/Cookies
- ODM para la base de datos documental Mongo DB
- Motor de Templates (Volt)
- Inyección de Dependencias DI/IOC
- Gestión de Eventos
- Cifrado
- Filtrado y Saneamiento
- Constructor de Formularios y Validación
- Mensajes Instantáneos
- Cache
- Paginación
- Anotaciones
- Seguridad
- Traducción
- Gestión de Assets (despliegue de archivos públicos: js,css)
- Auto-Loader Universal
- Logging
- Interfaz de comandos CLI
Instalación de Phalcon
Usaremos Ubuntu como distribución base de preferencia una versión LTS 12.04 o release superior
Logueandose como root $> sudo su - Actualizando la lista de paquetes $> apt-get -y update Instalamos vim para como editor de texto $> apt-get -y install vim Instalando los paquetes de desarrollo de php y el compilador de c $> apt-get -y install php5-dev php5-mysql gcc Instalando el sistema de control de versiones git $> apt-get -y install git Haciendo un checkout del proyecto; desde github $> git clone git://github.com/phalcon/cphalcon.git Compilando el framework $> cd cphalcon/build Ubuntu de 32 bits $> ./install 32bits Ubuntu de 64 bits $> ./install 64bits Habilitando la extensión phalcon en la configuración de php $> vim /etc/php5/conf.d/20-phalcon.ini extension=phalcon.so Verificando la carga de la exensión phalcon $> php -r "print_r(get_loaded_extensions());" | grep phalcon
Plataforma de despliegue (LAMP o LEMP)
* Instalación de Apache, extensiones de PHP y MySQL (LAMP)
Apache es el servidor web más popular en la internet y su combinación con Linux, PHP y MySQL lo convierten en la plataforma más importante en el despliegue de aplicaciones web. Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl)
$> apt-get install apache2 php5 mysql-server php5-mysql \ php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl
* Instalación de Ngnix, PHP y MySQL (Linux EngineX: LEMP)
Ngix es un servidor web muy ligero, de gran performance y cada vez gana más aceptación; su uso con PHP, PHP-FPM y MySQL lo convierten en una interesante alternativa a Apache Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl) y php-fpm (fast cgi)
$> apt-get install nginx php5 mysql-server php5-mysql \ php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl php5-fpm
Primera Aplicación: holamundo
Estructura base de directorios
tutorial/
app/
controllers/
models/
views/
public/
css/
img/
js/
Creación de la estructura base de directorios
$> cd /var/www $> mkdir holamundo $> mkdir holamundo/app $> mkdir holamundo/app/controllers $> mkdir holamundo/app/models $> mkdir holamundo/app/views $> mkdir holamundo/public $> mkdir holamundo/public/css $> mkdir holamundo/public/img $> mkdir holamundo/public/jsCreación del archivo .htaccess del directorio public para habilitar el uso de URLs Limpias
$> vim holamundo/public/.htaccess
AddDefaultCharset UTF-8 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] </IfModule>Definiendo el BootStrap principal (Front Controller)
$> vim holamundo/public/index.php
<?php try{ //Register an autoloader $loader = new \Phalcon\Loader(); $loader->registerDirs(array( '../app/controllers/', '../app/models/' ))->register(); //Creando una instancia de Inyección de Dependencias $di = new Phalcon\DI\FactoryDefault(); //Definiendo el directorio de vistas de la aplicacion, con el uso de una función lamba (función anónima) $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('../app/views/'); return $view; }); //Gestionando la petición y desplegando la aplicación $application = new \Phalcon\Mvc\Application(); $application->setDI($di); echo $application->handle()->getContent(); } catch(\Phalcon\Exception $e) { echo "PhalconException: ", $e->getMessage(); }Creando el controlador IndexController
$> vim holamundo/app/controllers/IndexController.php
<?php class IndexController extends \Phalcon\Mvc\Controller { // método para la acción index public function indexAction() { } }Creando el directorio la vista para el controlador index
$> mkdir holamundo/app/views/indexCreando el archivo de vista para la acción index
$> vim holamundo/app/views/index/index.phtml
Despliegue y prueba de la Aplicación Crearemos un dominio ficticio en el /etc/hosts Agregar en la última líneaHola Mundo desde Phalcon :)
$> vim /etc/hosts 127.0.1.1 www.holamundo.com
Despliegue en Apache
Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz /var/www/holamundo/public
Reemplazar el contenido
$> vim /etc/apache2/sites-enabled/000-default
Reiniciamos Apache<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www/holamundo/public<Directory />Options FollowSymLinksAllowOverride None</Directory><Directory /var/www/holamundo/public>Options Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow,denyallow from all</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<Directory "/usr/lib/cgi-bin">AllowOverride NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatchOrder allow,denyAllow from all</Directory>ErrorLog ${APACHE_LOG_DIR}/error.log# Possible values include: debug, info, notice, warn, error, crit,# alert, emerg.LogLevel warnCustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>
$> /etc/init.d/apache2 restart
Comprobamos nuestro hola mundo con el navegador http://www.holamundo.com
Despliegue en Nginx
Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz /var/www/holamundo/public
Reemplazar el contenido
$> vim /etc/nginx/sites-enabled/default
Reiniciamos Nginxserver {listen 80;server_name www.holamundo.com;index index.php index.html index.htm;set $root_path '/var/www/holamundo/public';root $root_path;try_files $uri $uri/ @rewrite;location @rewrite {rewrite ^/(.*)$ /index.php?_url=/$1;}location ~ \.php {fastcgi_pass unix:/var/run/php5-fpm.sock;fastcgi_index /index.php;include /etc/nginx/fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {root $root_path;}location ~ /\.ht {deny all;}}
$> /etc/init.d/nginx restart
Comprobamos nuestro hola mundo con el navegador http://www.holamundo.com
1 comentario:
y donde queda el resto del curso?
Publicar un comentario