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!

Desenvolvimento para a Web com CakePHP

  • 1.
  • 2.
    Quem é essecara para falar isso?
  • 3.
    Quem é essecara 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.
  • 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.
  • 7.
  • 8.
  • 9.
  • 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 $ cdsimpleblog ● $
  • 16.
    Na prática $ cdsimpleblog ● $ ./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.
  • 18.
  • 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.
  • 32.