programaciÓn de aplicaciÓns co framework cakephp
DESCRIPTION
Introdución o uso de cake nas I Xornadas de Programación Web en Software Libre de OusliTRANSCRIPT
PROGRAMACIÓN DE APLICACIÓNSCO FRAMEWORK CAKEPHP
Toni Martínez Carballo - http://ousli.org
INDICEINDICE
1.INTRODUCCIÓN
2.INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
3.MVC
4.CONVENCIÓNS DE CAKE
5.MODELO
6.CONTROLADOR
7.VISTA
8.BIBLIOGRAFÍA
1. INTRODUCCIÓN1. INTRODUCCIÓN● Arquitectura MVC (ModeloVistaControlador).
● Integración de CRUD (Acrónimo de Create Read Update Delete). Esto permitiranos facer consultas coa base de datos de forma sinxela, abstraéndonos en moitos casos do uso de SQL.
● Uso de URL amigables para os buscadores, ademais de poder personalizalas o noso gusto.
● Application Scaffolding
● Validación de formularios integrada
● Sistema de templates doado e rápido
● Sistema ACL propio.
● Limpeza de Datos, moi útil para liberar dos datos enviados polos usuarios de ataques ou datos non desexados.
● Flexible sistema de Cache.
1. INTRODUCCIÓN1. INTRODUCCIÓN
Cake php ademais conta con outras características, non tan técnicas, que fan deste framework unha solución para ter moi en conta o planificar o desenvolvemento dunha aplicación web.
● Comunidade activa e amigable.● Licencia Flexible > MIT License● Compatible con PHP 4 e PHP 5
2. INSTALACIÓN E CONFIGURACIÓN DE 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHPCAKEPHP
RequisitosAntes de empezar a instalación debemos comprobar os requerimentos básicos para o uso do framework. Os seus requerementos son:
● Un servidor HTTP, como apache (non provei en outro), que teña habilitado as sesións e o módulo mod_rewrite.
● PHP en verisións superioriores a 4.3.2 se se trata de php4, en php5 tamé funciona perfectamente.
● Unha base de datos. Cake soporta MySQL e PostgreSQL aínda que pode funcionar con máis cun wraper para ADODB.
2. INSTALACIÓN E CONFIGURACIÓN DE 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHPCAKEPHP
¡Vamos coa Instalación!● DESCARGAR CAKE PHP
Cakephp ten neste intre dous brazos de desenvolvemento:
– 1.1.x.x > Actualmente 1.1.4797
– 1.2.x.x > Aínda ¡Inestable!
Descargamos cakephp da súa web http://cakephp.org en concreto de http://cakeforge.org/projects/cakephp/
● DESCOMPRIMIR tar xvfz cake_1.1.13.4797.tar.gz
2. INSTALACIÓN E CONFIGURACIÓN DE 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHPCAKEPHP
PARA A INSTALACIÓN TEMOS TRES OPCIÓNS
– INSTALACIÓN PARA DESENVOLVEMENTO (¡Rápida!)
– CONFIGURACIÓN DE PRODUCCIÓN
– CONFIGURACIÓN AVANZADA
2. INSTALACIÓN E CONFIGURACIÓN DE 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHPCAKEPHP
INSTALACIÓN PARA DESENVOLVEMENTO
Simplemente consiste en copiar os ficheiros de cakephp nuna carpeta dentro do noso DocumentRoot, neste caso o noso DocumentRoot será /var/www/ polo que podemos copiar o contido da descompresión anterior no ake en /var/www/cake/ e deste modo facendo un http://localhost/cake/ xa podemos acceeder a nosa instalación.
¡PERO! mod_rewrite instalado e con AllowOverride All para ó directorio
<Directory "/var/www/cake3/">Options Indexes MultiViews FollowSymLinksAllowOverride AllOrder allow,DenyAllow from all
</Directory>
2. INSTALACIÓN E CONFIGURACIÓN DE 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHPCAKEPHP
INSTALACIÓN PARA DESENVOLVEMENTO
¿FUNCIONA?
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
INSTALACIÓN DE PRODUCCIÓN
● Esta configuración, poderíamos dicir que é unha adaptación da anterior pero para unha web en producción, é dicir, nun dominio de internet no que tan só funcione esa web.
● mod_rewrite instalado e con AllowOverride All para ó directorio
● Para que sexa nun dominio concreto, configuraremos un VirtualHost<VirtualHost *> ServerName charlacake.net DocumentRoot /var/www/cake3/app/webroot/ <Directory "/var/www/cake3/app/webroot/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,Deny Allow from all </Directory></VirtualHost>
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
CONFIGURACIÓN AVANZADA
A configuración avanzada consiste en que tódolas webs que empregen cake e que teñamos no noso servidor, empregen a mesma librería de cake para que non teña que ser incluida en cada unha das webs.
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
CONFIGURACIÓN A BASE DE DATOS
● Temos que crear unha base de datos e darlle acceso a un usuario a ela.
● As opcións de configuración están en cake/app/config/database.php
● Este ficheiro o creamos a partir do que trae cake de exemplo e que se chama cake/app/config/databas.php.default
var $default = array('driver' => 'mysql', 'connect' => 'mysql_connect', 'host' => 'localhost', 'login' => 'inestable', 'password' => 'inestable', 'database' => 'xestion', 'prefix' => '');
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
CONFIGURACIÓN AVANZADA
Por exemplo, poderíamos facer a seguinte instalación:
● /usr/lib/cake -----> Aquí gardaríamos a librería de cake.
● /home/toni/miweb ---> Aquí gardaríamos os php da nosa aplicación.
● /var/www/toniblog ---> Aquí gardaríamos o webroot (ese directorio indícase no DocumentRoot de apache).
Inicializamos as constantes no index.php do noso DocumentRoot
if (!defined('ROOT')){
define('ROOT', DS.'home'.DS.'toni');}if (!defined('APP_DIR')){
define ('APP_DIR', 'miweb');}if (!defined('CAKE_CORE_INCLUDE_PATH')){
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib');}
● Nome dos modelos: <nome_singular_obxeto>, coa primeira letra en maiúscula. Por exemplo o modelo que reflexa a entidade count é Count. O nome do ficheiro php que codifica o modelo ten o seu mesmo nome pero en minúsculas, ex: count.php
● Nome dos controladores: <nome_plural_modelo>Controller Por exemplo CountsController e o seu ficheiro sería en minúsculas e unha barra baixa para separar as verbas: counts_controller.php
● Nome das vistas: <nome_da_acción> Por exemplo: add.thtml
● Claves foráneas: <nome_modelo_singular_id> Por exemplo en a clave foranea de Count en Transaction é count_id.
● Nome das táboas: <nome_modelo_plural>, en minúsculas. Por exemplo a táboa de Count é counts
4. CONVENCIÓNS DE CAKE4. CONVENCIÓNS DE CAKE
5. MODELO5. MODELO¡IMPLEMENTAREMOS
ESTA APLICACIÓN!
Faremos un exemplo en ¡vivo! dunha simple aplicación que xestione a contabilidade (a moi menor escala) dunha entidade
5. MODELO5. MODELOASOCIACIÓNS ENTRE MODELOS
Un dos puntos principais que proporciona cake que é as asociacións existentes entre modelos que nos permitirán reflexar as relacións entre táboas. As relacións existentes son:
● hasOne: Utilizada para indicar unha relación de 1 a 1.
● hasMany: Utilizada para indicar unha relación de 1 a N.
● belongsTo: Utilizada para indicar unha relación de N a 1.
● hasAndBelongsToMany: Utilizada para indicar unha relación de N a N.
5. MODELO5. MODELOVARIABLES DO MODELO
● $primaryKey
● $recursive
– $recursive = 0 (Cake colle os datos da táboa)
– $recursive = 1 (Cake colle os datos da taboa e os dos seus asociados)
– $recursive = 2 (Cake colle os datos da taboa, os dos seus asociados e os dos asociados dos seus asociados)
● $transactional
● $useTable
● $useDbConfig
5. MODELO5. MODELOVARIABLES DO MODELO
● $validate
● VALID_NOT_EMPTY
● VALID_NUMBER
● VALID_EMAIL
● VALID_YEAR
● Predefinidas en /cake/lib/validators.php empregando expresións regulares.
var $validate = array('count_id' => VALID_NOT_EMPTY,'name' => VALID_NOT_EMPTY,'amount' => VALID_NUMBER,'date' => VALID_NOT_EMPTY,'user_id' => VALID_NOT_EMPTY,
);
5. MODELO5. MODELOFUNCIÓNS DE DATOS DO MODELO
● find ($conditions, $fields, $order, $recursive)
● findAll ($conditions, $fields, $order, $limit, $page, $recursive)
● field ($name, $conditions=null, $order=null)
● findAllBy<fieldName>($value)
● findBy<fieldName>($value)
● findNeighbours ($conditions, $field, $value)
● findCount($conditions)
● generateList ($conditions, $order, $limit, $keyPath, $valuePath)
● read ($fields, $id)
● query($data)
● execute($data)
5. MODELO5. MODELO
FUNCIÓNS DE CALLBACK
● beforeFind(&$queryData)
● afterFind($results)
● beforeValidate()
● beforeSave()
● afterSave()
● beforeDelete()
● afterDelete()
6. CONTROLADOR6. CONTROLADOR● No controlador definiremos o código que se debe de executar en cada
unha das accións.
● Todos os controladores, deberemos de gardalos en /app/controllers
class PostsController extends AppController{ var $name = 'Posts';
function index() { }
function view($id) { }
function add() {
} }
6. CONTROLADOR6. CONTROLADORVARIABLES DO CONTROLADOR
● $name
● $uses
● $helpers
– var $helpers = array('Html','Ajax','Javascript');● $layout
● $autoRender
● $beforeFilter
● $components
6. CONTROLADOR6. CONTROLADOR
PARÁMETROS DO CONTROLADOR
● $this>data
● $this>params['form']
● $this>params['ajax']
● $this>params['controller']
● $this>params['action']
● $this>params['pass']
● $this>params['url']
6. CONTROLADOR6. CONTROLADORFUNCIÓNS DE DATOS DO CONTROLADOR
● set($var,$value)
● validateErrors()
● validate()
● redirect($url)
● flash($message,$url,$pause)
● requestAction($url,$extra)
● log($message,$type)
FUNCIÓNS DE CALLBACK
● beforeFilter()
● afterFilter()
● beforeRender()
7. VISTA7. VISTA● A vista é unha plantilla que se chama despois da acción. Estará formada
por HTML e PHP. Cake proporciona elementos que permiten a partir de simples funcións xerar código HTML.
● Gárdanse en /app/views/posts/add.html
● Os datos que utiliza para mostralos o colle a partir do modelo o cal inicializa unha variable (soe ser arry) mediante a funcion set().
● Layouts: Ademáis das vistas, pódense engadir plantillas. Por defecto xa existe unha plantilla que se pode personalizar e ademáis pódense engadir máis inicializando a variable $layout no modelo.
● Elements: Permite xerar bloques específicos de HTML de forma automática. Son moi útiles en caso de listas que nos xere a partir dun array.
BIBLIOGRAFÍABIBLIOGRAFÍA
● http://manual.cakephp.org● http://api.cakephp.org● http://cakephp.org/screencasts● http://es.wikipedia.org/wiki/Modelo_Vista_Controlador● http://www.mononeurona.org/index.php?idp=738
Licenza da ponenciaLicenza da ponenciaCreative Commons AttributionShareAlike 2.5 License
Texto da licenza dispoñible en http://creativecommons.org/licenses/by-sa/2.5/legalcode