SlideShare uma empresa Scribd logo
DESENVOLVENDO
DESENVOLVENDO
para a WEB
com
Quem é esse cara para falar isso?
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)
Menção honrosa
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.
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.
Características
Desenvolva
com rapidez
Configuração
zero
Fácil de
aprender
Pilhas
incluídas
Convenções
MVC intuitivas
Seguro
O padrão MVC
DBDB
ModelModel
ControllerController
ViewView
DispatcherDispatcher
RoutesRoutes
Web ServerWeb Server
BrowserBrowser
Boas práticas
Na prática
$ curl -s http://getcomposer.com/installer | php
● $
Na prática
$ curl -s http://getcomposer.com/installer | php
$ ls
composer.phar*
$
Na prática
$ curl -s http://getcomposer.com/installer | php
$ ls
composer.phar*
$ php composer.phar create-project 
--prefer-dist cakephp/app simpleblog
$
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/
$
Na prática
$ tree -L 1 simpleblog
├── bin/
├── composer.json
├── config/
├── index.php
├── logs/
├── plugins/
├── README.md
├── src/
├── tests/
├── tmp/
├── vendor/
└── webroot/
Na prática
$ cd simpleblog
● $
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`
●
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()
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
Receita de blog à la CakePHP
Receita de blog à la CakePHP
Ingredientes
● 1 banco de dados
● 1 navegador web
● 1 editor de texto
● CakePHP à gosto :-)
Tempo de preparo
● 15 minutos
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',
...
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.
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 ???
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 {
}
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);
}
}
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'));
}
}
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 :-)
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`
●
Se é CRUD, pode gerar código
$ ./bin/cake bake all posts
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
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.
OBRIGADO!OBRIGADO!

Mais conteúdo relacionado

PDF
Web Offline
PDF
Ionic 2/3 + Firebase
PDF
Mean Stack
PPTX
Instalação CakePHP 2.2.3
PDF
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
PDF
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
KEY
Python 06
PPTX
Maven 3, Sonar e Hudson
Web Offline
Ionic 2/3 + Firebase
Mean Stack
Instalação CakePHP 2.2.3
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
Python 06
Maven 3, Sonar e Hudson

Mais procurados (20)

PDF
Introdução ao Flyway
PPTX
Maven em 10 minutos
PPTX
Evoluindo bancos de dados com Flyway
PDF
Angular js
PDF
Introdução à MEAN Stack
PPT
Seis passos para colocar um projeto local em um servidor próprio
PDF
Seu framework é melhor pra quê?
PDF
Desenvolvimento de Módulos Divi Builder
PDF
Desafio Rest API
ODP
servlet-requisicoes
ODP
Sendo um GIT master
PPTX
Laravel 5: Entenda o ambiente e a estrutura MVC
PDF
Top Plugins Wordpress
PDF
Como o Cucumber Funciona
PDF
Introdução ao vraptor
PDF
Processo de desenvolvimento na samba
PDF
Como fazer boas libs
KEY
Python 07
PDF
Curso de ReactJS
PDF
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Introdução ao Flyway
Maven em 10 minutos
Evoluindo bancos de dados com Flyway
Angular js
Introdução à MEAN Stack
Seis passos para colocar um projeto local em um servidor próprio
Seu framework é melhor pra quê?
Desenvolvimento de Módulos Divi Builder
Desafio Rest API
servlet-requisicoes
Sendo um GIT master
Laravel 5: Entenda o ambiente e a estrutura MVC
Top Plugins Wordpress
Como o Cucumber Funciona
Introdução ao vraptor
Processo de desenvolvimento na samba
Como fazer boas libs
Python 07
Curso de ReactJS
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Anúncio

Destaque (20)

PDF
BrOffice nas Universidades
PDF
Plataforma IMMI
PDF
Compartilhando experiências sobre ir de bike ao trabalho
PPTX
Ciclovia belem final
PDF
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
PDF
#safaDojo - Coding Dojo Go lang
PDF
Reflexões aleatórias para calouros em
PDF
Minicurso grails
PPT
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
PDF
Desenvolvimento web com groovy e grails.
PDF
Junho 2016 - Django - A sua cápsula de soluções web em python
PPTX
Grails - Destaques (para quem já sabe Java)
PPT
Minicurso Play Framework - Tão fácil que nem parece Java
PPTX
Curso de web2py - Apresentação
PDF
Python storm grupy_sp_23_04
PDF
CakePHP com sotaque brasileiro
PDF
O que esperar do Codeigniter 4
PPTX
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
PDF
Desenvolvimento Web com CakePHP
PDF
Iniciando com o PHP e conhecendo Codeigniter
BrOffice nas Universidades
Plataforma IMMI
Compartilhando experiências sobre ir de bike ao trabalho
Ciclovia belem final
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
#safaDojo - Coding Dojo Go lang
Reflexões aleatórias para calouros em
Minicurso grails
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web com groovy e grails.
Junho 2016 - Django - A sua cápsula de soluções web em python
Grails - Destaques (para quem já sabe Java)
Minicurso Play Framework - Tão fácil que nem parece Java
Curso de web2py - Apresentação
Python storm grupy_sp_23_04
CakePHP com sotaque brasileiro
O que esperar do Codeigniter 4
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Desenvolvimento Web com CakePHP
Iniciando com o PHP e conhecendo Codeigniter
Anúncio

Semelhante a Desenvolvimento para a Web com CakePHP (20)

PDF
Apresentando o CakePHP
PPT
Cakephp - framework de desenvolvimento de aplicações Web em PHP
PPT
Desenvolvendo aplicações web com o framework cakephp
PDF
Spring MVC Framework
PPT
Cake Php
PPTX
Programando php com excelência
PDF
Desenvolvimento ágil com Kohana framework
PDF
Desenvolvimento Web com Simfony Framework.
PDF
Integração Contínua com Cruise Control e phpUnderControl
PDF
Pense no futuro: PHP com Zend Framework
PPT
Desenvolvimento Agil Com Doctrine Orm
PDF
PDF
Rails na prática
PPTX
PPTX
Desenvolvimento web com .NET Core - Meetup São Carlos
PDF
CakePHP
ODP
Php 05 Mvc
PDF
Integração Contínua com CruiseControl e phpUnderControl
PDF
Integracao Contínua com CruiseControl e phpUnderControl
PDF
Programando para programadores: Desafios na evolução de um Framework
Apresentando o CakePHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Desenvolvendo aplicações web com o framework cakephp
Spring MVC Framework
Cake Php
Programando php com excelência
Desenvolvimento ágil com Kohana framework
Desenvolvimento Web com Simfony Framework.
Integração Contínua com Cruise Control e phpUnderControl
Pense no futuro: PHP com Zend Framework
Desenvolvimento Agil Com Doctrine Orm
Rails na prática
Desenvolvimento web com .NET Core - Meetup São Carlos
CakePHP
Php 05 Mvc
Integração Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
Programando para programadores: Desafios na evolução de um Framework

Mais de Marcelo Andrade (8)

PDF
Testes de software automatizados
PDF
Selenium: visão geral
PDF
Introdução ao Desenvolvimento com Padrões Web: XHTML Essencial
PDF
Visão Ágil Academic Meeting / TaSAFO em fatos e fotos
PDF
Compartilhando experiências em software livre
PDF
Zend Framework: abordagem prática
PDF
Joomla!: uma visão geral
PDF
Slackware Linux
Testes de software automatizados
Selenium: visão geral
Introdução ao Desenvolvimento com Padrões Web: XHTML Essencial
Visão Ágil Academic Meeting / TaSAFO em fatos e fotos
Compartilhando experiências em software livre
Zend Framework: abordagem prática
Joomla!: uma visão geral
Slackware Linux

Último (19)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Apple Pippin Uma breve introdução. - David Glotz
Processos na gestão de transportes, TM100 Col18
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula 18 - Manipulacao De Arquivos python
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula04-Academia Heri- Tecnologia Geral 2025

Desenvolvimento para a Web com CakePHP

  • 2. Quem é esse cara para falar isso?
  • 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)
  • 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. 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.
  • 10. Na prática $ curl -s http://getcomposer.com/installer | php ● $
  • 11. Na prática $ curl -s http://getcomposer.com/installer | php $ ls composer.phar* $
  • 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. 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. Na prática $ tree -L 1 simpleblog ├── bin/ ├── composer.json ├── config/ ├── index.php ├── logs/ ├── plugins/ ├── README.md ├── src/ ├── tests/ ├── tmp/ ├── vendor/ └── webroot/
  • 15. Na prática $ cd simpleblog ● $
  • 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` ●
  • 19. Receita de blog à la CakePHP
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Se é CRUD, pode gerar código $ ./bin/cake bake all posts
  • 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. 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.