Desenvolvimento para a Web com CakePHP
-
Upload
marcelo-andrade -
Category
Technology
-
view
120 -
download
5
Transcript of Desenvolvimento para a Web com CakePHP
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)
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
Desenvolvacom rapidez
Configuraçãozero
Fácil deaprender
Pilhasincluídas
ConvençõesMVC intuitivas
Seguro
O padrão MVC
DBDB
ModelModel
ControllerController
ViewView
DispatcherDispatcher
RoutesRoutes
Web ServerWeb Server
BrowserBrowser
Na prática
$ curl -s http://getcomposer.com/installer | php
$ lscomposer.phar*
$ php composer.phar create-project \ --prefer-dist cakephp/app simpleblog
$
Na prática
$ curl -s http://getcomposer.com/installer | php
$ lscomposer.phar*
$ php composer.phar create-project \ --prefer-dist cakephp/app simpleblog
$ lscomposer.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● $ ./bin/cake server
Welcome to CakePHP v3.0.3 Console---------------------------------------------------------------App : srcPath: /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
DBDBModelModel
ControllerController
ViewView
postspostsTable
(plural)
Post
(singular)
PostsController
(plural)
posts/index.ctpposts/view.ctpposts/edit.ctpposts/add.ctp
(plural)
PostPost
id* title content created modified
id* title content created modified
share() share()
Padrões de nomenclatura
DBDBModelModel
ControllerController
ViewView
postspostsTable
(plural)
Post
(singular)
PostsController
(plural)
posts/index.ctpposts/view.ctpposts/edit.ctpposts/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
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 arquivoconfig/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 emsrc/Model/Table/PostsTable.php
<?phpnamespace App\Model\Table;use Cake\ORM\Table;
class PostsTable extends Table {
public function initialize(array $config) { $this->addBehavior('Timestamp'); } }
<?phpnamespace App\Model\Table;use Cake\ORM\Table;
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 emsrc/Controller/???
<?phpnamespace App\Controller;
class ???
<?phpnamespace App\Controller;
class ???
Receita de blog à la CakePHP
3.Crie o controller para os posts do blog emsrc/Controller/PostsController.php
<?phpnamespace App\Controller;
class PostsController extends AppController {}
<?phpnamespace App\Controller;
class PostsController extends AppController {}
Receita de blog à la CakePHP
3.Inclua uma ação default neste controllersrc/Controller/PostsController.php
<?phpnamespace App\Controller;
class PostsController extends AppController {
public function index() {$posts = $this->Posts->find('all');$this->set('posts', $posts);
}}
<?phpnamespace App\Controller;
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 controllersrc/Controller/PostsController.php
<?phpnamespace App\Controller;
class PostsController extends AppController {
public function index() {$posts = $this->Posts->find('all');$this->set(compact('posts'));
}}
<?phpnamespace App\Controller;
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 emsrc/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 : srcPath: /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 postsWelcome 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.ctpBake All complete.