PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP

2,951 views

Published on

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

Published in: Technology
  • Be the first to comment

PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP

  1. 1. PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP Toni Martínez Carballo - http://ousli.org
  2. 2. INDICE 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
  3. 3. 1. 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. ●
  4. 4. 1. 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 ●
  5. 5. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP Requisitos Antes 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.
  6. 6. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP ¡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 ●
  7. 7. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP PARA A INSTALACIÓN  TEMOS TRES OPCIÓNS INSTALACIÓN PARA DESENVOLVEMENTO (¡Rápida!) – CONFIGURACIÓN DE PRODUCCIÓN – CONFIGURACIÓN AVANZADA –
  8. 8. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP 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. <Directory "/var/www/cake3/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,Deny Allow from all </Directory> ¡PERO! mod_rewrite instalado e con AllowOverride All para ó directorio 
  9. 9. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP INSTALACIÓN PARA DESENVOLVEMENTO ¿FUNCIONA?
  10. 10. 2. 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>
  11. 11. 2. 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.
  12. 12. 2. 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' => '');
  13. 13. 2. 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'); }
  14. 14. 3.MVC
  15. 15. 4. CONVENCIÓNS DE CAKE 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
  16. 16. 5. MODELO ¡IMPLEMENTAREMOS ESTA APLICACIÓN! Faremos un exemplo en  ¡vivo! dunha simple  aplicación que xestione a  contabilidade (a moi menor  escala) dunha entidade
  17. 17. 5. MODELO ASOCIACIÓ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. ●
  18. 18. 5. MODELO VARIABLES 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 ●
  19. 19. 5. MODELO VARIABLES DO MODELO $validate ● var $validate = array( 'count_id' => VALID_NOT_EMPTY, 'name' => VALID_NOT_EMPTY, 'amount' => VALID_NUMBER, 'date' => VALID_NOT_EMPTY, 'user_id' => VALID_NOT_EMPTY, ); VALID_NOT_EMPTY  ● VALID_NUMBER  ● VALID_EMAIL  ● VALID_YEAR  ● Predefinidas en /cake/lib/validators.php empregando expresións regulares. ●
  20. 20. 5. MODELO FUNCIÓ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) ●
  21. 21. 5. MODELO FUNCIÓNS DE CALLBACK beforeFind(&$queryData) ● afterFind($results) ● beforeValidate() ● beforeSave() ● afterSave() ● beforeDelete() ● afterDelete() ●
  22. 22. 6. 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()     {     }      }
  23. 23. 6. CONTROLADOR VARIABLES DO CONTROLADOR $name ● $uses ● $helpers ● var $helpers = array('Html','Ajax','Javascript'); – $layout ● $autoRender ● $beforeFilter ● $components ●
  24. 24. 6. 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'] ●
  25. 25. 6. CONTROLADOR FUNCIÓ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() ●
  26. 26. 7. 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.
  27. 27. BIBLIOGRAFÍA http://manual.cakephp.org ● http://api.cakephp.org ● http://cakephp.org/screencasts ● http://es.wikipedia.org/wiki/Modelo_Vista_Controlado ● http://www.mononeurona.org/index.php?idp=738 ●
  28. 28. Licenza da ponencia Creative Commons Attribution­ShareAlike 2.5 License Texto da licenza dispoñible en http://creativecommons.org/licenses/by-sa/2.5/legalcode
  29. 29. GRAZAS POLA ATENCIÓN ¿DÚBIDAS?
  30. 30. GRAZAS POLA ATENCIÓN UNHA COUSIÑA MÁIS

×