Your SlideShare is downloading. ×
Intro a cakephp
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intro a cakephp

1,775
views

Published on

Un breve resumen de CakePHP presentado a BetaBeers en Valencia 01/12/2011

Un breve resumen de CakePHP presentado a BetaBeers en Valencia 01/12/2011

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,775
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
47
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. CakePHPßetaBeers Valencia, 01/12/2011
  • 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
  • 3. Tecnologías y Herramientas
  • 4. Tecnologías y Herramientas
  • 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
  • 9. Bienvenido a CakePHP
  • 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]uitWhat would you like to Bake? (D/M/V/C/P/F/T/Q)>
  • 13. Primeros pasos: PrototipoComo hacer el blog-tutorial en 15 segundos1. Cargar sql en BBDD2. Generar controlador3. 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 PostsWelcome to CakePHP v2.0.4 Console---------------------------------------------------------------App : cakephpPath: /home/andy/www/apps/cakephp/---------------------------------------------------------------Baking controller class for Posts...Creating file /home/andy/www/apps/cakephp/Controller/PostsController.phpWrote `/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.phpWrote `/home/andy/www/apps/cakephp/Test/Case/Controller/PostsControllerTest.php`
  • 16. 3) Ver Resultados
  • 17. Un Controlador de Scaffolding<?php// Controller/PostsController.phpApp::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 postsADD COLUMN published TINYINT(1) DEFAULT 0AFTER body;
  • 20. Las vistas se adaptan
  • 21. Siguiente Fase: Bake MVCComo hacer el blog-tutorial en 15 segundos.Otra vez.1. Cargar sql en BBDD2. Generar MVC3. Ver resultados
  • 22. 2) Generar MVC[andy@work:~/www/apps/cakephp(2.0)]$ Console/cake bake all Post -qBaking 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
  • 23. 3) Ver Resultados
  • 24. Diferencias con ScaffoldingAhora hay:Controller/PostsController.phpModel/Post.phpTest/Case/Controller/PostsControllerTest.phpTest/Fixture/PostFixture.phpView/Posts/add.ctpView/Posts/edit.ctpView/Posts/index.ctpView/Posts/view.ctp
  • 25. No es dinámico<?php// Controller/PostsController.phpApp::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
  • 30. Sin validación - GIGO
  • 31. La razón - un modelo flaco<?php// Model/Post.phpApp::uses(AppModel, Model);/** * Post Model * */class Post extends AppModel {}
  • 32. Añadir validación (con Bake)<?phpApp::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... ), ...
  • 33. Resultados con validación
  • 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
  • 37. Ejemplo mensaje de error
  • 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
  • 44. 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. ¿Preguntas? http://slideshare.net/AD7six/intro-a-cakephp