SlideShare a Scribd company logo
1 of 49
Download to read offline
CakePHP
ßetaBeers Valencia, 01/12/2011
Sobre mi


●   Andy Dawson
●   @AD7six
●   Blogger infrequente AD7six.com
●   Desarrollador desde 1999
●   PHP desde 2005
●   CakePHP
    ○ desde 2005
    ○ Autor de muchos plugins
    ○ Miembro del equipo core de CakePHP
Tecnologías y Herramientas
Tecnologías y Herramientas
¿Por que usar un framework?


● Estructura
● Se concentra en implementar la aplicación
● Evita problemas comunes
● Consigue un código reutilizable
● Se beneficia del conocomiento de otros
  desarolladores
● Desarrollo Rápido (RAD)
Los problemas de los frameworks
●   Estructura
●   Falta de flexibilidad
●   Complejidad
●   Tiempo para aprender
●   Rendimiento
●   Hay muchos - ¿cómo elejir?
CakePHP en breve


●   Convención sobre Configuración
●   Estructura MVC
●   Fácil de usar, rápido de aprender
●   RAD prototyping (scaffolding)
●   Generdor de código (bake)
●   unit test (phpunit)
●   Gran cantidad de plugins publicados
●   Gran comunidad
●   versión 1.3, php 4.3.2+
●   versión 2.0, php 5.2.6+ (y pdo)
Como Empezar


●   Principal: http://cakephp.org
●   Repo: http://github.com/cakephp/cakephp
●   Docs: http://book.cakephp.org/2.0/
●   El grupo google: cakephp-esp
●   Irc: Freenode #cakephp-es
Bienvenido a CakePHP
Ficheros y carpetas


● ROOT
  ○ app
    ■ Controler
    ■ Model
    ■ View
    ■ weboot
       ●   css
       ●   js
  ○ lib
     ■ Cake
  ○ plugins
  ○ vendors
Ficheros y carpetas


● ROOT
  ○ app
    ■ Controler
    ■ Model
    ■ View
    ■ weboot
       ●   css
       ●   js
  ○ lib
     ■ Cake       La estructura es una
  ○ plugins       "convención" - Se puede
  ○ vendors       mover fácilmente
Bake - un generador de todo

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake

---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
>
Primeros pasos: Prototipo


Como hacer el blog-tutorial en 15 segundos

1. Cargar sql en BBDD
2. Generar controlador
3. Ver resultado
1) SQL

/* First, create our posts table: */
CREATE TABLE posts (
   id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
   title VARCHAR(50),
   body TEXT,
   created DATETIME DEFAULT NULL,
   modified DATETIME DEFAULT NULL
);

/* Then insert some posts for testing: */
INSERT INTO posts (title,body,created)
   VALUES ('The title', 'This is the post body.', NOW());
INSERT INTO posts (title,body,created)
   VALUES ('A title once again', 'And the post body follows.', NOW());
INSERT INTO posts (title,body,created)
   VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
2) Generar Controllador

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake Controller Posts
Welcome to CakePHP v2.0.4 Console
---------------------------------------------------------------
App : cakephp
Path: /home/andy/www/apps/cakephp/
---------------------------------------------------------------

Baking controller class for Posts...

Creating file /home/andy/www/apps/cakephp/Controller/PostsController.php
Wrote `/home/andy/www/apps/cakephp/Controller/PostsController.php`
Bake is detecting possible fixtures...

Baking test case for Posts Controller ...

Creating file /home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php
Wrote `/home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php`
3) Ver Resultados
Un Controlador de Scaffolding

<?php
// Controller/PostsController.php
App::uses('AppController', 'Controller');
/**
 * Posts Controller
 *
 */
class PostsController extends AppController {

/**
 * Scaffold
 *
 * @var mixed
 */
      public $scaffold;

}
Puntos de interés


● Definir BBDD -> generar código
● Si no existe un modelo - Cake usará un
  modelo genérico
● Es todo dinámico - no hay código para
  modificar
● Útil mientras el diseño de la BBDD no esté
  definido
¿Cambios en la BBDD?


ALTER TABLE
  posts
ADD COLUMN
  published TINYINT(1) DEFAULT 0
AFTER body;
Las vistas se adaptan
Siguiente Fase: Bake MVC


Como hacer el blog-tutorial en 15 segundos.
Otra vez.

1. Cargar sql en BBDD
2. Generar MVC
3. Ver resultados
2) Generar MVC

[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake all Post -q

Baking model class for Post...
Baking controller class for Posts...
Baking test case for Posts Controller ...
Baking `index` view file...
Baking `view` view file...
Baking `add` view file...
Baking `edit` view file...

Bake All complete
3) Ver Resultados
Diferencias con Scaffolding


Ahora hay:

Controller/PostsController.php
Model/Post.php
Test/Case/Controller/PostsControllerTest.php
Test/Fixture/PostFixture.php
View/Posts/add.ctp
View/Posts/edit.ctp
View/Posts/index.ctp
View/Posts/view.ctp
No es dinámico

<?php
// Controller/PostsController.php
App::uses('AppController', 'Controller');
/**
 * Posts Controller
 */
class PostsController extends AppController {

/**
 * index method
 */
       public function index() {
             $this->Post->recursive = 0;
             $this->set('posts', $this->paginate());
       }

     ...
Contiene ejemplos de uso

<?php // View/Posts/edit.ctp ?>
<div class="posts form">
<?php echo $this->Form->create('Post');?>
    <fieldset>
       <legend><?php echo __('Edit Post'); ?></legend>
    <?php
       echo $this->Form->input('id');
       echo $this->Form->input('title');
       echo $this->Form->input('body');
       echo $this->Form->input('published');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit'));?>
</div>
...
Se puede hacer aun más sencillo



 <?php // View/Posts/edit.ctp ?>
 <div class="posts form">
   <?php
      echo $this->Form->create();
      echo $this->Form->inputs();
      echo $this->Form->end();
   ?>
 </div>
Puntos de interés


● Cuidado con bake en modo no-interactivo,
  sobrescribe ficheros sin confirmar
● Scaffolding y el código de bake son
  visualmente iguales
● Usa Scaffolding si es útil para ti - o salta
  directamente a código que puedas tocar.
● Pero usa bake - ahorra mucho tiempo
Modelos - clases importantes


● "Fat Models, Skinny Controllers" es un dicho
  al que hay que hacer caso
● Es mejor llena los modelos con logica, no
  los controlladores
● Ejemplo - validación
Sin validación - GIGO
La razón - un modelo flaco


<?php
// Model/Post.php
App::uses('AppModel', 'Model');
/**
 * Post Model
 *
 */
class Post extends AppModel {
}
Añadir validación (con Bake)

<?php
App::uses('AppModel', 'Model');
class Post extends AppModel {

  public $displayField = 'title';

  public $validate = array(
    'title' => array(
         'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Escribe un titulo, por favor'
         ),
         'minlength' => array(
            'rule' => array('minlength', 10),
            'message' => 'Un poquito mas...'
         ),
    ...
Resultados con validación
Puntos de interés

● Las vistas (el ayudante formulario) conocen
  automáticamente las reglas de validación
● Hay muchas reglas de validación en el core
● Es fácil escribir tus proprias reglas de
  validación
● Las reglas se puede desactivar o modificar
Resumen de bake


● Se usa para generar projectos,
  ficheros/clases o todo a la vez
● Interactivo o no
● Dinámico (Scaffolding) o no
● Las plantillas de cada clase se puede
  modificar
● Detecta relaciones en la BBDD
● El código se adapta a las relaciones
● No es obligotario usarlo
Explorando en mas detalle


● Mensajes de error útiles
Ejemplo mensaje de error
Explorando en mas detalle


● Mensajes de error útiles
● Debug Kit - un gran ayuda
Debug Kit - installado
Debug Kit - Session data
Debug Kit - Query Log
Debug Kit - Timer




   26 (ms)
Explorando en mas detalle


● Mensajes de error útiles
● Debug Kit - un gran ayuda
● Otras comandos de la consola
La consola
Explorando en mas detalle


●   Mensajes de error útiles
●   Debug Kit - un gran ayuda
●   Otras comandos de la consola
●   Projectos útiles/ejemplos
Proyectos interesantes




●   http://croogo.org- Blog/CMS
●   http://my.candycane.jp - Issue tracker
●   http://cakepackages.com - Plugin index
●   Mark Story Asset Compress
Explorando en más detalle


●   Mensajes de error útiles
●   Debug Kit - un gran ayuda
●   Otras comandos de la consola
●   Projectos utiles/ejemplos
●   Para leer: CakePHP 1.3 Application
    Cookbook - Mariano Iglesias 2011
¿Preguntas?
 http://slideshare.net/AD7six/intro-a-cakephp

More Related Content

What's hot

Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPSebastián Joya
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 
Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”JOANSAGO
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, LaravelRolando Caldas
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQLWilian
 

What's hot (20)

Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Asp.net
Asp.netAsp.net
Asp.net
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHP
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
Primefaces
PrimefacesPrimefaces
Primefaces
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
Rails intro
Rails introRails intro
Rails intro
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Tutorial ASP .NET
Tutorial ASP .NETTutorial ASP .NET
Tutorial ASP .NET
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQL
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 

Similar to Intro a cakephp

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Consola Cake Php, Uso Y Testing
Consola Cake Php, Uso Y TestingConsola Cake Php, Uso Y Testing
Consola Cake Php, Uso Y Testingdriveros
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelosdokeosla
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Sara Lissette L. Ibáñez
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Como preparar un buen pastel con CakePHP
Como preparar un buen pastel con CakePHPComo preparar un buen pastel con CakePHP
Como preparar un buen pastel con CakePHPJairo Serrano
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Acquia
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Pedro Manuel Baeza Romero
 

Similar to Intro a cakephp (20)

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Consola Cake Php, Uso Y Testing
Consola Cake Php, Uso Y TestingConsola Cake Php, Uso Y Testing
Consola Cake Php, Uso Y Testing
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Manualcake
ManualcakeManualcake
Manualcake
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Como preparar un buen pastel con CakePHP
Como preparar un buen pastel con CakePHPComo preparar un buen pastel con CakePHP
Como preparar un buen pastel con CakePHP
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Turbogears
TurbogearsTurbogears
Turbogears
 
Django
DjangoDjango
Django
 
Webpack desde cero
Webpack desde ceroWebpack desde cero
Webpack desde cero
 
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
Jornadas Odoo 2016 - Cómo realizar un módulo de Odoo compatible con todo - Pe...
 

Recently uploaded

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Recently uploaded (20)

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

Intro a cakephp

  • 2. Sobre mi ● Andy Dawson ● @AD7six ● Blogger infrequente AD7six.com ● Desarrollador desde 1999 ● PHP desde 2005 ● CakePHP ○ desde 2005 ○ Autor de muchos plugins ○ Miembro del equipo core de CakePHP
  • 5. ¿Por que usar un framework? ● Estructura ● Se concentra en implementar la aplicación ● Evita problemas comunes ● Consigue un código reutilizable ● Se beneficia del conocomiento de otros desarolladores ● Desarrollo Rápido (RAD)
  • 6. Los problemas de los frameworks ● Estructura ● Falta de flexibilidad ● Complejidad ● Tiempo para aprender ● Rendimiento ● Hay muchos - ¿cómo elejir?
  • 7. CakePHP en breve ● Convención sobre Configuración ● Estructura MVC ● Fácil de usar, rápido de aprender ● RAD prototyping (scaffolding) ● Generdor de código (bake) ● unit test (phpunit) ● Gran cantidad de plugins publicados ● Gran comunidad ● versión 1.3, php 4.3.2+ ● versión 2.0, php 5.2.6+ (y pdo)
  • 8. Como Empezar ● Principal: http://cakephp.org ● Repo: http://github.com/cakephp/cakephp ● Docs: http://book.cakephp.org/2.0/ ● El grupo google: cakephp-esp ● Irc: Freenode #cakephp-es
  • 10. Ficheros y carpetas ● ROOT ○ app ■ Controler ■ Model ■ View ■ weboot ● css ● js ○ lib ■ Cake ○ plugins ○ vendors
  • 11. Ficheros y carpetas ● ROOT ○ app ■ Controler ■ Model ■ View ■ weboot ● css ● js ○ lib ■ Cake La estructura es una ○ plugins "convención" - Se puede ○ vendors mover fácilmente
  • 12. Bake - un generador de todo [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est case [Q]uit What would you like to Bake? (D/M/V/C/P/F/T/Q) >
  • 13. Primeros pasos: Prototipo Como hacer el blog-tutorial en 15 segundos 1. Cargar sql en BBDD 2. Generar controlador 3. Ver resultado
  • 14. 1) SQL /* First, create our posts table: */ CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL ); /* Then insert some posts for testing: */ INSERT INTO posts (title,body,created) VALUES ('The title', 'This is the post body.', NOW()); INSERT INTO posts (title,body,created) VALUES ('A title once again', 'And the post body follows.', NOW()); INSERT INTO posts (title,body,created) VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());
  • 15. 2) Generar Controllador [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake Controller Posts Welcome to CakePHP v2.0.4 Console --------------------------------------------------------------- App : cakephp Path: /home/andy/www/apps/cakephp/ --------------------------------------------------------------- Baking controller class for Posts... Creating file /home/andy/www/apps/cakephp/Controller/PostsController.php Wrote `/home/andy/www/apps/cakephp/Controller/PostsController.php` Bake is detecting possible fixtures... Baking test case for Posts Controller ... Creating file /home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php Wrote `/home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php`
  • 17. Un Controlador de Scaffolding <?php // Controller/PostsController.php App::uses('AppController', 'Controller'); /** * Posts Controller * */ class PostsController extends AppController { /** * Scaffold * * @var mixed */ public $scaffold; }
  • 18. Puntos de interés ● Definir BBDD -> generar código ● Si no existe un modelo - Cake usará un modelo genérico ● Es todo dinámico - no hay código para modificar ● Útil mientras el diseño de la BBDD no esté definido
  • 19. ¿Cambios en la BBDD? ALTER TABLE posts ADD COLUMN published TINYINT(1) DEFAULT 0 AFTER body;
  • 20. Las vistas se adaptan
  • 21. Siguiente Fase: Bake MVC Como hacer el blog-tutorial en 15 segundos. Otra vez. 1. Cargar sql en BBDD 2. Generar MVC 3. Ver resultados
  • 22. 2) Generar MVC [andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake all Post -q Baking model class for Post... Baking controller class for Posts... Baking test case for Posts Controller ... Baking `index` view file... Baking `view` view file... Baking `add` view file... Baking `edit` view file... Bake All complete
  • 24. Diferencias con Scaffolding Ahora hay: Controller/PostsController.php Model/Post.php Test/Case/Controller/PostsControllerTest.php Test/Fixture/PostFixture.php View/Posts/add.ctp View/Posts/edit.ctp View/Posts/index.ctp View/Posts/view.ctp
  • 25. No es dinámico <?php // Controller/PostsController.php App::uses('AppController', 'Controller'); /** * Posts Controller */ class PostsController extends AppController { /** * index method */ public function index() { $this->Post->recursive = 0; $this->set('posts', $this->paginate()); } ...
  • 26. Contiene ejemplos de uso <?php // View/Posts/edit.ctp ?> <div class="posts form"> <?php echo $this->Form->create('Post');?> <fieldset> <legend><?php echo __('Edit Post'); ?></legend> <?php echo $this->Form->input('id'); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->input('published'); ?> </fieldset> <?php echo $this->Form->end(__('Submit'));?> </div> ...
  • 27. Se puede hacer aun más sencillo <?php // View/Posts/edit.ctp ?> <div class="posts form"> <?php echo $this->Form->create(); echo $this->Form->inputs(); echo $this->Form->end(); ?> </div>
  • 28. Puntos de interés ● Cuidado con bake en modo no-interactivo, sobrescribe ficheros sin confirmar ● Scaffolding y el código de bake son visualmente iguales ● Usa Scaffolding si es útil para ti - o salta directamente a código que puedas tocar. ● Pero usa bake - ahorra mucho tiempo
  • 29. Modelos - clases importantes ● "Fat Models, Skinny Controllers" es un dicho al que hay que hacer caso ● Es mejor llena los modelos con logica, no los controlladores ● Ejemplo - validación
  • 31. La razón - un modelo flaco <?php // Model/Post.php App::uses('AppModel', 'Model'); /** * Post Model * */ class Post extends AppModel { }
  • 32. Añadir validación (con Bake) <?php App::uses('AppModel', 'Model'); class Post extends AppModel { public $displayField = 'title'; public $validate = array( 'title' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Escribe un titulo, por favor' ), 'minlength' => array( 'rule' => array('minlength', 10), 'message' => 'Un poquito mas...' ), ...
  • 34. Puntos de interés ● Las vistas (el ayudante formulario) conocen automáticamente las reglas de validación ● Hay muchas reglas de validación en el core ● Es fácil escribir tus proprias reglas de validación ● Las reglas se puede desactivar o modificar
  • 35. Resumen de bake ● Se usa para generar projectos, ficheros/clases o todo a la vez ● Interactivo o no ● Dinámico (Scaffolding) o no ● Las plantillas de cada clase se puede modificar ● Detecta relaciones en la BBDD ● El código se adapta a las relaciones ● No es obligotario usarlo
  • 36. Explorando en mas detalle ● Mensajes de error útiles
  • 38. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda
  • 39. Debug Kit - installado
  • 40. Debug Kit - Session data
  • 41. Debug Kit - Query Log
  • 42. Debug Kit - Timer 26 (ms)
  • 43. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola
  • 45. Explorando en mas detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola ● Projectos útiles/ejemplos
  • 46. Proyectos interesantes ● http://croogo.org- Blog/CMS ● http://my.candycane.jp - Issue tracker ● http://cakepackages.com - Plugin index ● Mark Story Asset Compress
  • 47. Explorando en más detalle ● Mensajes de error útiles ● Debug Kit - un gran ayuda ● Otras comandos de la consola ● Projectos utiles/ejemplos ● Para leer: CakePHP 1.3 Application Cookbook - Mariano Iglesias 2011
  • 48.