SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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

Mais procurados

Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Evoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayEvoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayVitor Albuquerque
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber FuncionaLaís Berlatto
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na sambajoaogmaciel
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoGuilherme Heynemann Bruzzi
 

Mais procurados (20)

Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Maven em 10 minutos
Maven em 10 minutosMaven em 10 minutos
Maven em 10 minutos
 
Evoluindo bancos de dados com Flyway
Evoluindo bancos de dados com FlywayEvoluindo bancos de dados com Flyway
Evoluindo bancos de dados com Flyway
 
Angular js
Angular jsAngular js
Angular js
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 
Top Plugins Wordpress
Top Plugins WordpressTop Plugins Wordpress
Top Plugins Wordpress
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Python 07
Python 07Python 07
Python 07
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do código
 

Destaque

BrOffice nas Universidades
BrOffice nas UniversidadesBrOffice nas Universidades
BrOffice nas UniversidadesMarcelo Andrade
 
Compartilhando experiências sobre ir de bike ao trabalho
Compartilhando experiências sobre ir de bike ao trabalhoCompartilhando experiências sobre ir de bike ao trabalho
Compartilhando experiências sobre ir de bike ao trabalhoMarcelo Andrade
 
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com PuppetDevOps: Falando um pouco sobre desenvolvimento orientado a testes com Puppet
DevOps: Falando um pouco sobre desenvolvimento orientado a testes com PuppetMarcelo Andrade
 
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go langMarcelo Andrade
 
Reflexões aleatórias para calouros em
Reflexões aleatórias para calouros emReflexões aleatórias para calouros em
Reflexões aleatórias para calouros emMarcelo Andrade
 
Minicurso grails
Minicurso grailsMinicurso grails
Minicurso grailsNatã Melo
 
Desenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconDesenvolvimento web ágil com Python e web2py #qconsp #qcon
Desenvolvimento web ágil com Python e web2py #qconsp #qconBruno Rocha
 
Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Desenvolvimento web com groovy e grails.
Desenvolvimento web com groovy e grails.Bryan Ollivie
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Douglas Mendes
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaWandesson Soares
 
Curso de web2py - Apresentação
Curso de web2py - ApresentaçãoCurso de web2py - Apresentação
Curso de web2py - ApresentaçãoJúlia Rizza
 
Python storm grupy_sp_23_04
Python storm grupy_sp_23_04Python storm grupy_sp_23_04
Python storm grupy_sp_23_04Eric Hideki
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
O que esperar do Codeigniter 4
O que esperar do Codeigniter 4O que esperar do Codeigniter 4
O que esperar do Codeigniter 4Jonathan Lamim
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Rafael Oliveira
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
Iniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo CodeigniterIniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo CodeigniterRenan Martins Pimentel
 

Destaque (20)

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

Semelhante a Desenvolvimento para a Web com CakePHP

Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 

Semelhante a Desenvolvimento para a Web com CakePHP (20)

Apresentando o CakePHP
Apresentando o CakePHPApresentando o CakePHP
Apresentando o CakePHP
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Cake Php
Cake PhpCake Php
Cake Php
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
Palestra
PalestraPalestra
Palestra
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
CakePHP
CakePHPCakePHP
CakePHP
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 

Mais de Marcelo Andrade

Testes de software automatizados
Testes de software automatizadosTestes de software automatizados
Testes de software automatizadosMarcelo Andrade
 
Introdução ao Desenvolvimento com Padrões Web: XHTML Essencial
Introdução ao Desenvolvimento com Padrões Web: XHTML EssencialIntrodução ao Desenvolvimento com Padrões Web: XHTML Essencial
Introdução ao Desenvolvimento com Padrões Web: XHTML EssencialMarcelo Andrade
 
Visão Ágil Academic Meeting / TaSAFO em fatos e fotos
Visão Ágil Academic Meeting / TaSAFO em fatos e fotosVisão Ágil Academic Meeting / TaSAFO em fatos e fotos
Visão Ágil Academic Meeting / TaSAFO em fatos e fotosMarcelo Andrade
 
Compartilhando experiências em software livre
Compartilhando experiências em software livreCompartilhando experiências em software livre
Compartilhando experiências em software livreMarcelo Andrade
 
Zend Framework: abordagem prática
Zend Framework: abordagem práticaZend Framework: abordagem prática
Zend Framework: abordagem práticaMarcelo Andrade
 
Joomla!: uma visão geral
Joomla!: uma visão geralJoomla!: uma visão geral
Joomla!: uma visão geralMarcelo Andrade
 

Mais de Marcelo Andrade (8)

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

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.