Desenvolvimento para a Web com CakePHP

32
DESENVOLVENDO DESENVOLVENDO para a WEB com

Transcript of Desenvolvimento para a Web com CakePHP

DESENVOLVENDODESENVOLVENDO

para a WEBcom

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

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

Boas práticas

Na prática

$ curl -s http://getcomposer.com/installer | php● $

Na prática

$ curl -s http://getcomposer.com/installer | php

$ lscomposer.phar*

$

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● $

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

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 posts

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.

OBRIGADO!OBRIGADO!