30
PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP Toni Martínez Carballo - http://ousli.org

PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP

  • Upload
    ousli07

  • View
    2.610

  • Download
    3

Embed Size (px)

DESCRIPTION

Introdución o uso de cake nas I Xornadas de Programación Web en Software Libre de Ousli

Citation preview

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 (Modelo­Vista­Controlador).

● 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');}

3.MVC3.MVC

● 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 Attribution­ShareAlike 2.5 License

Texto da licenza dispoñible en http://creativecommons.org/licenses/by-sa/2.5/legalcode

GRAZAS POLA ATENCIÓNGRAZAS POLA ATENCIÓN

¿DÚBIDAS?

GRAZAS POLA ATENCIÓNGRAZAS POLA ATENCIÓN

UNHA COUSIÑA MÁIS