O documento fornece uma introdução ao framework CakePHP para desenvolvimento web. Em poucas frases, descreve o CakePHP como um framework open source em PHP que utiliza boas práticas de engenharia de software como padrões MVC e convenções para permitir o desenvolvimento rápido de aplicações web. Também apresenta brevemente como iniciar um projeto com CakePHP usando Composer.
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.
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`
●
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