Desenvolvimento para a Web com CakePHP

580 visualizações

Publicada em

Slides de apresentação introdutória ao framework CakePHP. Contém conceitos e trechos de código ilustrativos de uso da ferramenta. Na apresentação apresento ainda exemplos de código da aplicação contruída além de todo o networking e troca de experiências.

Originalmente ministrada a uma plateia de estudantes no evento BelemCodeIn2015() em 08 de maio de 2015 no IFPA em Belém.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
580
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvimento para a Web com CakePHP

  1. 1. DESENVOLVENDO DESENVOLVENDO para a WEB com
  2. 2. Quem é esse cara para falar isso?
  3. 3. Quem é esse cara para falar isso? ● Técnico, bacharéu e especialista ● Analista, programador freelancer e palestrante ● ~15 anos de experiência profissional ● Moderador da lista cakephp-pt e maior tradutor em língua portuguesa do CakePHP (até v.1.2)
  4. 4. Menção honrosa
  5. 5. O “Cake” é isso? É um framework de código-aberto, feito em PHP, que provê uma arquitetura padronizada para desenvolvimento rápido de aplicações web, utilizando boas práticas de engenharia de software como padrões de projetos.
  6. 6. O “Cake” é isso? É um framework de código-aberto, feito em PHP, que provê uma arquitetura padronizada para desenvolvimento rápido de aplicações web, utilizando boas práticas de engenharia de software como padrões de projetos.
  7. 7. Características Desenvolva com rapidez Configuração zero Fácil de aprender Pilhas incluídas Convenções MVC intuitivas Seguro
  8. 8. O padrão MVC DBDB ModelModel ControllerController ViewView DispatcherDispatcher RoutesRoutes Web ServerWeb Server BrowserBrowser
  9. 9. Boas práticas
  10. 10. Na prática $ curl -s http://getcomposer.com/installer | php ● $
  11. 11. Na prática $ curl -s http://getcomposer.com/installer | php $ ls composer.phar* $
  12. 12. Na prática $ curl -s http://getcomposer.com/installer | php $ ls composer.phar* $ php composer.phar create-project --prefer-dist cakephp/app simpleblog $
  13. 13. Na prática $ curl -s http://getcomposer.com/installer | php $ ls composer.phar* $ php composer.phar create-project --prefer-dist cakephp/app simpleblog $ ls composer.phar* simpleblog/ $
  14. 14. Na prática $ tree -L 1 simpleblog ├── bin/ ├── composer.json ├── config/ ├── index.php ├── logs/ ├── plugins/ ├── README.md ├── src/ ├── tests/ ├── tmp/ ├── vendor/ └── webroot/
  15. 15. Na prática $ cd simpleblog ● $
  16. 16. Na prática $ cd simpleblog ● $ ./bin/cake server Welcome to CakePHP v3.0.3 Console --------------------------------------------------------------- App : src Path: /home/marcelo/simpleblog/src/ DocumentRoot: /home/marcelo/simpleblog/webroot --------------------------------------------------------------- built-in server is running in http://localhost:8765/ You can exit with `CTRL-C` ●
  17. 17. Padrões de nomenclatura DBDB ModelModel ControllerController ViewView posts postsTable (plural) Post (singular) PostsController (plural) posts/index.ctp posts/view.ctp posts/edit.ctp posts/add.ctp (plural) PostPost id* title content created modified id* title content created modified share()share()
  18. 18. Padrões de nomenclatura DBDB ModelModel ControllerController ViewView posts postsTable (plural) Post (singular) PostsController (plural) posts/index.ctp posts/view.ctp posts/edit.ctp posts/add.ctp (plural) PostPost id* title content created modified id* title content created modified share()share() www.site.com/posts/view/1www.site.com/posts/view/1
  19. 19. Receita de blog à la CakePHP
  20. 20. Receita de blog à la CakePHP Ingredientes ● 1 banco de dados ● 1 navegador web ● 1 editor de texto ● CakePHP à gosto :-) Tempo de preparo ● 15 minutos
  21. 21. Receita de blog à la CakePHP Modo de preparo 1.Informe a conexão ao banco no arquivo config/app.php <?php ... 'Datasources' => [ 'default' => [ 'host' => 'localhost', 'username' => 'dbuser', 'password' => '83L3M#C0dE!', 'database' => 'simpleblog', ... <?php ... 'Datasources' => [ 'default' => [ 'host' => 'localhost', 'username' => 'dbuser', 'password' => '83L3M#C0dE!', 'database' => 'simpleblog', ...
  22. 22. Receita de blog à la CakePHP 2.Crie uma classe para a tabela posts em src/Model/Table/PostsTable.php <?php namespace AppModelTable; use CakeORMTable; class PostsTable extends Table { public function initialize(array $config) { $this->addBehavior('Timestamp'); } } <?php namespace AppModelTable; use CakeORMTable; class PostsTable extends Table { public function initialize(array $config) { $this->addBehavior('Timestamp'); } } Isto cria implicitamente o model Post.
  23. 23. Receita de blog à la CakePHP 3.Crie o controller para os posts do blog em src/Controller/??? <?php namespace AppController; class ??? <?php namespace AppController; class ???
  24. 24. Receita de blog à la CakePHP 3.Crie o controller para os posts do blog em src/Controller/PostsController.php <?php namespace AppController; class PostsController extends AppController { } <?php namespace AppController; class PostsController extends AppController { }
  25. 25. Receita de blog à la CakePHP 3.Inclua uma ação default neste controller src/Controller/PostsController.php <?php namespace AppController; class PostsController extends AppController { public function index() { $posts = $this->Posts->find('all'); $this->set('posts', $posts); } } <?php namespace AppController; class PostsController extends AppController { public function index() { $posts = $this->Posts->find('all'); $this->set('posts', $posts); } }
  26. 26. Receita de blog à la CakePHP 3.Inclua uma ação default neste controller src/Controller/PostsController.php <?php namespace AppController; class PostsController extends AppController { public function index() { $posts = $this->Posts->find('all'); $this->set(compact('posts')); } } <?php namespace AppController; class PostsController extends AppController { public function index() { $posts = $this->Posts->find('all'); $this->set(compact('posts')); } }
  27. 27. Receita de blog à la CakePHP 4.Crie a view correspondente à ação em src/Template/Posts/index.ctp <?php foreach($posts as $post): ?> <article> <h1><?= $this->Html->link( $post->title, ['action' => 'view', $post->id]) ?></h1> <small>Postado em <?= $this->Time->nice( $post->created) ?></small> <?= $this->Text->excerpt($post->content, null) ?> </article> <? endforeach; ?> <?php foreach($posts as $post): ?> <article> <h1><?= $this->Html->link( $post->title, ['action' => 'view', $post->id]) ?></h1> <small>Postado em <?= $this->Time->nice( $post->created) ?></small> <?= $this->Text->excerpt($post->content, null) ?> </article> <? endforeach; ?> ...e veja o resultado :-)
  28. 28. Se é CRUD, pode gerar código $ cd simpleblog ● $ ./bin/cake server Welcome to CakePHP v3.0.3 Console --------------------------------------------------------------- App : src Path: /home/marcelo/simpleblog/src/ DocumentRoot: /home/marcelo/simpleblog/webroot --------------------------------------------------------------- built-in server is running in http://localhost:8765/ You can exit with `CTRL-C` ●
  29. 29. Se é CRUD, pode gerar código $ ./bin/cake bake all posts
  30. 30. Se é CRUD, pode gerar código $ ./bin/cake bake all posts Welcome to CakePHP v3.0.3 Console -------------------------------------------------------- … Baking table class for Posts... Creating file src/Model/Table/PostsTable.php … Baking entity class for Post... Creating file src/Model/Entity/Post.php … Baking controller class for Posts... Creating file src/Controller/PostsController.php
  31. 31. Se é CRUD, pode gerar código … Baking `index` view file... Creating file src/Template/Posts/index.ctp … Baking `view` view file... Creating file src/Template/Posts/view.ctp … Baking `add` view file... Creating file src/Template/Posts/add.ctp … Baking `edit` view file... Creating file src/Template/Posts/edit.ctp Bake All complete.
  32. 32. OBRIGADO!OBRIGADO!

×