Está en la página 1de 26

Documentao Easy Framework

Release 2.x

Easy Framework Foundation

Sumrio
Iniciando.................................................................................................................................................. 3 Construindo um blog ............................................................................................................................... 3 Baixando o Easy Framework ................................................................................................................. 4 Criando o Banco de dados.................................................................................................................... 5 Configurao do Banco de dados ......................................................................................................... 5 Configuraes opcionais ...................................................................................................................... 6 Uma observao no mod_rewrite ........................................................................................................ 7 Tutorial do Blog Adicionando camadas .................................................................................................. 7 Criando um Modelo ............................................................................................................................. 7 Criando o Controller de postagem........................................................................................................ 8 Criando a View de postagens ............................................................................................................. 10 Adicionando postagens ...................................................................................................................... 13 Validao de dados ............................................................................................................................ 15 Editando Postagens............................................................................................................................ 17 Excluindo Postagens........................................................................................................................... 18 Rotas ................................................................................................................................................. 20 Concluso .......................................................................................................................................... 21 Leitura Adicional .................................................................................................................................... 22 Uma requisio tpica no EasyFw ....................................................................................................... 22 Convenes do EasyFw ...................................................................................................................... 23 Convenes dos Controllers ........................................................................................................... 23 Convenes para Arquivos e nomes de Classes .............................................................................. 24 Convenes de Modelos e Banco de dados .................................................................................... 24 Convenes das Views ................................................................................................................... 24 Estrutura de pastas do EasyFw ........................................................................................................... 25 A pasta App.................................................................................................................................... 25 Estendendo o EasyFw ........................................................................................................................ 25 Estendendo Controllers Components .............................................................................................. 26 Estendendo s Views - Helpers........................................................................................................... 26

Iniciando
O EasyFw fornece uma robusta base para a sua aplicao. Ela pode controlar diversos aspectos, desde a requisio inicial do usurio at a renderizao da pgina web. O framework segue os princpios do MVC, permitindo a voc uma fcil customizao e extenso na maioria dos aspectos da aplicao. O framework tambm fornece uma organizao lgica de sua estrutura, desde nomes de arquivos a nomes de tabelas do banco, deixando sua aplicao inteiramente lgica e consistente. Esse um conceito simples mas poderoso. Siga as convenes e voc saber exatamente os as coisas esto e como elas esto organizadas. A melhor maneira de aprender e experimentar o EasyFw sentar e construir alguma coisa. Para comear vamos construir um Blog simples.

Construindo um blog
Bem-vindo ao EasyFw. Voc est conferindo esse tutorial provavelmente porque quer conhecer mais sobre como o EasyFw funciona. nossa meta aumentar a produtividade e deixar a tarefa de codificar mais prazerosa: ns esperamos que voc veja isso enquanto voc codifica. Esse tutorial vai levar voc atravs da criao de um blog simples. Ns vamos baixar e instalar o EasyFw, criar e configurar o banco de dados e criar a lgica suficiente para listar, adicionar, editar e excluir postagens do blog. Aqui est o que ns vamos precisar: 1. Um servidor web. Vamos assumir que voc est usando o Apache, apesar disso as instrues para usar outro servidor web so bem similares. Talvez ns precisaremos brincar um pouco com as configuraes do servidor, mas na maioria das vezes voc colocar o EasyFw para rodar sem configurar nada. Tenha certeza que voc est rodando o PHP 5.3.0 ou maior. 2. Um servidor de banco de dados. Ns vamos utilizar o servidor MySQL nesse tutorial. Voc precisar entender bem a linguagem SQL para criarmos um banco de dados. Como ns vamos utilizar MySQL, tenha certeza que voc tem a extenso pdo_mysql instalada (normalmente j vem instalada por padro nos pacotes). 3. Conhecimento bsico de PHP. Quanto mais orientao a objetos voc conhecer melhor, mas no tema caso voc seja f de programao procedural. 3

4. Finalmente, voc precisar conhecer o bsico do padro de programao MVC. Uma pequena reviso pode ser encontrada em Entendendo o Model-View-Controller. No se preocupe, apenas meia pgina ou menos. Vamos comear!

Baixando o Easy Framework


Vamos baixar um esqueleto de uma aplicao do EasyFw, para isso vamos clonar o repositrio do Easy Skeleton Application. git clone git://github.com/LellysInformatica/easyskeleton.git --recursive

Dessa maneira o EasyFw j vir junto com a aplicao dentro da pasta vendor. Caso voc no queira clonar o EasySkeleton, apenas baixa-lo normalmente, ento voc dever baixa o EasyFw tambm e coloca-lo na pasta vendor com o nome easyframework.

Por padro o EasyFw vir com a seguinte estrutura: Sua_aplicacao o App o Vendors Easyframework o .htaccess o README.md

Agora seria uma boa hora para voc conhecer a Eastrutura de pastas do EasyFw

Criando o Banco de dados


Agora, vamos criar o banco de dados para nosso blog. Se voc ainda no fez, crie um banco de dados em branco para usarmos nesse tutorial, com um nome de sua escolha. Vamos criar apenas uma tabela para guardarmos nossas postagens. Ns tambm vamos adicionar algumas postagens para testarmos nossa aplicao. Execute as seguintes instrues SQL:
/* Primeiro, criamos nossa tabela de postagens: */ CREATE TABLE posts ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(50), conteudo TEXT, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); /* E vamos inserir alguns dados para testes: */ INSERT INTO posts ( title,body) VALUES (O titulo, Isso o contedo da postagem.); INSERT INTO posts ( title,body) VALUES (Outro titulo, outro conteudo da postagem.); INSERT INTO posts ( title,body) VALUES (Titulo 3, Isso realmente legal.);

AS escolhas dos nomes das colunas no so por acaso. Se voc seguir as convenes de banco de dados e de classes do EasyFw voc poder ter as vantagens de no precisar especificar nada em arquivos de configuraes, pois o EasyFw j ir mapear tudo automaticamente (voc pode conferir as convenes na seo Convenes do Easy Framework), mas nada impede que voc use outro padro. Seguindo as convenes vamos ficar com a tabela com o nome de posts, automaticamente ela ser ligada ao modelo Posts.

Configurao do Banco de dados


Vamos dizer para o EasyFw onde nosso banco de dados est localizado. Para a maioria, essa ser a primeira e ltima vez que voc precisar configurar alguma coisa. O arquivo de configurao do banco de dados est localizado em /App/Config/database.yml. O arquivo de configurao bem simples, basta voc trocar os valores para as informaes do seu servidor de banco de dados. Em uma mquina local o arquivo ficar parecido com o abaixo:
datasource: development: default: driver: mysql

host: localhost user: root password: '' database: blog_db encoding: utf8 prefix: '' production: default: driver: mysql host: localhost user: theUsername password: "justAPassToProduction" database: theDatabaseNameAtProduction encoding: utf8 prefix: ''

Uma vez configurado o arquivo de banco de dados, voc j pode acessar no seu browser a sua aplicao, e ver a tela de boas-vindas do EasyFw. Note: Lembre-se que voc precise ter a extenso PDO, e pdo_mysql habilitados no seu php.ini.

Configuraes opcionais
Existem mais trs itens interessantes que podem ser configurados. A maioria dos desenvolvedores completa essa sequncia de configuraes, mas elas no so obrigadas para esse tutorial. A primeira definir uma string aleatria (ou salt) que ser usado nas criptografias de segurana. O segundo definir um nmero randmico (ou seed) para encriptao. E o terceiro item permitir que o EasyFw escreva no diretrio tmp. O salt de segurana utilizado para hashes. Para alterar o valor padro basta abrir o arquivo de configuraes gerais /App/Config/application.yml na linha 52. Security: salt: 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi'

O chipher seed utilizado para encriptar e decriptar strings. Para alterar o valor padro basta abrir o arquivo de configuraes gerais /App/Config/application.yml na linha 53.
Security: cipherSeed: '76859309657453542496749683645'

A ltima tarefa dar permisso para pasta tmp.


$ chown -R www-data app/tmp

Se por alguma razo o EasyFw no puder escrever no diretrio tmp voc ser informado com um alerta, contanto que no esteja em modo de produo.

Uma observao no mod_rewrite


Ocasionalmente um novo usurio pode encontrar problemas com o mod_rewrite, por isso vamos falar um pouco sobre ele. Se por alguma motivo sua pgina de boas-vindas parecer estranha, sem css, imagens ou at mesmo um erro 500 no servidor, isso pode ser algum problema com o mod_rewrite. Ento aqui vo algumas dicas para tudo dar certo: Tenha certeza que a sobrescrita do .htaccess est permitida no seu httpd.config, l deve ter uma seo que permite essa sobrescrita. Tenha certeza que a opo AllowOverride est setada para All. Garanta que voc est editando o httpd.config correto ao invs do httpc.config do website ou usurio especficos. Tenha certeza que o Apache est carregando o mod_rewrite corretamente! Isso permitir que suas URLs fiquem legveis, por exemplo, ao invs www.example.com/index.php/controllername/actionname/param ficar www.example.com/controllername/actionname/param. Se voc est instalando o EasyFw em um servidor diferente do Apache, voc poder encontrar as instrues de reescrita de URLs na Instalao Avanada.

Tutorial do Blog Adicionando camadas


Criando um Modelo
O modelo o po e a manteiga das aplicaes do EasyFw. Criando um modelo no EasyFw nos permitir interagir com o nosso banco de dados, vamos ter as operaes de um CRUD bsico j moldadas para utilizarmos mais tarde. 7

O modelo do EasyFw deve ser colocado na pasta dos modelos /App/Model para nosso exemplo vamos salva-lo da seguinte maneira /App/Model/Post.php. O arquivo dever conter a classe Post, mais ou menos dessa forma:
<?php namespace App\Model; class Post extends AppModel { }

A conveno de nomes no EasyFw muito importante. Colocando o nome de nosso modelo como Post automaticamente o EasyFw infere que esse modelo ser utilizado pelo controller PostsController, e est ligado a uma tabela no banco de dados com o nome posts. Nota: O EasyFw dinamicamente cria um objeto do modelo para voc no seu controller, contanto que os nomes sigam o padro e o modelo esteja localizado em /App/Model. Isso significa que se por acidente o nome da classe ou arquivo de modelo estiver incorreto, o EasyFw no ir reconhece-lo e voc precisar dizer explicitamente que o nome diferente.

Criando o Controller de postagem


Prximo passo vamos criar o controller para nosso post. O controller o que ir ligar a lgica de negcio do nosso modelo e mostrar uma View para o usurio. Ns vamos grava o nosso novo controller com o nome PostsController.php dentro da pasta /App/Controller Aqui est como o controller deve estar:
<?php namespace App\Controller; class PostsController extends AppController { }

Agora, vamos adicionar uma action para nosso controller. Uma Action a representaes de funcionlidades da nossa aplicao, nada mais so que mtodos. Por exemplo, quando um usurio acessar www.example.com/posts/index (que o mesmo que www.example.com/posts), eles esperaro ver uma listagem das postagens. O cdigo para essa action algo assim:

<?php namespace App\Controller; use Easy\Model\FindMethod; class PostsController extends AppController { public function index() { $postagens = $this->Post->getEntityManager()->find(null, FindMethod::ALL); $this->postagens = $postagens; } }

Deixe-me explicar essa action. Definindo uma action index() no nosso PostsController, os usurios podem acessar sua lgica atravs do cominho www.example.com/posts. Logicamente, se ns definirmos um mtodo chamado foobar(), os usurios podero acessa-la pela url www.example.com/posts/foobar

Ateno: Voc pode se sentir tentado a nomear certos controllers e action para obter certas URLs. Resista a essa tentao siga as convenes de nomes do EasyFw (controllers no plural, etc.) e crie actions com os nomes legveis e entendveis. Voc pode mapear suas URLs para seu cdigo usando rotas, que vamos abordar mais a frente. Na primeira linha ns atribumos a uma varivel $postagens nossa listagem das postagens do banco, para isso utilizamos nosso modelo $this->Post e acessamos o EntityManager, com ele que temos as operaes de CRUD do banco de dados. Aps isso ns pedimos para ele utilizar o mtodo find() e passamos dois parmetros, o primeiro so as condies da busca (como filtros, ordenaes, etc.) e o segundo o tipo da busca, no nosso caso FindMethod::ALL para buscar todos os registros. Na outra linha, ns criamos uma varivel dinamicamente, ela ser nossa varivel na View. Atribumos a ela todas as nossas postagens e pronto j podemos acessa-la na View. Para aprender mais sobre os Controllers, visite a seo de Controllers.

Criando a View de postagens


Agora que j temos o nosso fluxo de dados do nosso modelo e nossa lgica da aplicao, vamos criar uma view para nossa ao index() que criamos anteriormente. As views do EasyFw so apresentaes para o usurio final, o EasyFw trabalha com uma abstrao das views para isso usamos o Smarty Template Engine. Para a maioria das aplicaes as views consistem em HTML junto com o Smarty, XML, JSON, CSV. Os layouts so representaes de cdigo que ficam ao redor da view, isso evita que ns tenhamos que ficar acresentando headers e footers em cada view que criarmos. Os layouts podem ser definidos para um controller ou action especficos, para esse tutorial vamos utilizar o Layout.tpl j existente. As views so salvas na pasta /App/View/Pages nessa pasta criamos outra pasta com o nome do controller (no nosso caso Posts) e salvamos nossa view com o nome da action, no caso index.tpl Vamos colocar as postagens em uma tabela, essa View ficara mais ou menos dessa form

{block name=content} <div class="page-header"> <h1>{__("Postagens do Blog")}</h1> </div> <table class="table table-bordered table-striped"> < tr > < th>Id</th > < th>Ttulo</th > < th>Data</th > < th>Aes</th > < /tr > {foreach $postagens as $postagem} < tr > <td>{$postagem->titulo}</td> <td>{$postagem->created|date_format: %x}</td> <td>{$Html->actionLink(Editar, view, posts, $postagem->id)} | {$Html->actionLink(Excluir, delete, posts, $postagem->id)} </td> < /tr > {/foreach} < /table > {/block}

Voc deve ter notado o uso de um objeto $Html->actionLink(). Esse tipo de objeto so chamados de Helpers. O EasyFw vem com diversos Helpers que voc pode utilizar em suas views, deixando mais fcil de trabalhar. Por exemplo o helper que utilizamos acima ir gera o HTML de um link para a action view no controller posts. O link criado pelo helper ir seguir o formato /controller/action/param1/param2. Nesse ponto voc j pode acessar seu browser http://www.example.com/posts/index. Voc deve ver todas as postagens que o nosso banco tem. Caso voc clique no link de edio voc ser informado pelo EasyFw que a action ainda no existe. Ento ns vamos cria-la agora:

11

<?php namespace App\Controller; use Easy\Model\FindMethod; class PostsController extends AppController { public function index() { $postagens = $this->Post->getEntityManager()->find(null, FindMethod::ALL); $this->postagens = $postagens; } public function view($id =null) { $postagem = $this->Post->getEntityManager()->read($id); $this->postagem = $ postagem; } }

O cdigo para leitura de uma postagem bem simples. Notem que estamos usando o read() ao invs do find() pois ns s queremos recuperar uma postagem. Notem tambm que a nossa action recebe um id como parmetro, esse id da postagem que queremos ver. Esse parmetro provido para a action atravs da URL. Se o usurio acessar /posts/view/3, ento o valor 3 passado como o $id. Agora vamos criar a View para nossa action view e salva-la em /App/View/Posts/view.tpl.

{block name=content} <div class="page-header"> <h1>{$postagem->titulo}< </h1> </div> <p><small>Data: {$postagem->created|date_format: %x}< /small></p > <p>{$postagem->conteudo}< /p > {/block} Veja que isso ir funcionar acessando o link pela tabela das nossas postagens ou acessando manualmente um post pela URL. Ex.:/posts/view/1.

Adicionando postagens
Ler registros do banco de dados e mostr-los um bom comeo, mas vamos aprender como adicionar registros. Primeiramente, vamos criar uma action chamada add() no nosso PostsController:
<?php namespace App\Controller; use Easy\Model\FindMethod; class PostsController extends AppController { public function index() { $postagens = $this->Post->getEntityManager()->find(null, FindMethod::ALL); $this->postagens = $postagens; } public function view($id =null) {

13

$postagem = $this->Post->getEntityManager()->read($id); $this->postagem = $ postagem; } public function add() { if ($this->request->is(post)) { if ($this->Post->save($this->request->data)) { $this->Session->setFlash(Sua postagem foi salva com sucesso.) ; $this->redirectToAction(index) ; } else { $this->Session->setFlash(Sua postagem no foi salva) ; } } } }

A action add() faz o seguinte: se o mtodo HTTP foi via POST, tente salvar os dados usando o modelo Post. Se por alguma razo no pode ser salvo, ele apenas ir renderizar a view. Isso nos d a chance de mostrar os erros de validao para o usurio. Cada request no EasyFw est encapsulado em um objeto chamado Request que pode ser acessado do seu controller pela propriedade $this->request. O objeto Request contm informaes uteis sobre o request realizado, e pode ser utilizado para controlar o fluxo da sua aplicao. Nesse caso, ns usamos o mtodo Request::is() para verificar se o request foi via POST. Quando um usurio utiliza um formulrio via POST para enviar dados para nossa aplicao, esses dados esto disponveis atravs da propriedade $this->data ou $this->request->data. Ns utilizamos o mtodo SessionComponent::setFlash() do componente de Sesso para setar uma mensagem na sesso e mostrar para o usurio depois do redirecionamento. Na View ns utilizamos SessionHelper::flash() que vai mostrar a mensagem e limpar a varivel da sesso. O mtodo Controller::redirectToAction() redireciona a aplicao para outra action e executa seus procedimentos. Chamar o mtodo save() ir validar o modelo e se encontrar algum erro ir abortar o processo de salvamento. Vamos abordar os error de modelos mais a frente.

Validao de dados
O EasyFw trabalha com validaes de uma forma fcil e rpida para que voc no precise perder tempo com enormes rotinas de validao. Para ter as vantagens da validao em formulrios, ns vamos precisar utilizar o FormHelper na nossa view: Aqui est nossa View de adio de postagens:
{block name=content} <div class="page-header"> <h1>{__("Adicionar Postagem")}</h1> </div> {$Form->create(add, posts)} {$Form->inputTextLabel(titulo)} {$Form->textAreaLabel(conteudo, [rows=>3])} {$Form->submit(Salvar, [class => btn])}{$Form->close()}

{/block}

Aqui ns utilizamos o FormHelper para gerar nossa tag HTML de um formulrio. Ele ir gerar a seguinte tag:
<form method="post" action="/posts/add">

O mtodo $Form->inputTextLabel() usado para gerar um element input. O primeiro parmetro corresponde a qual campo ele pertence, o Segundo parmetro um array com opes para personalizao do input, como css, onclick, id personalizado, etc. So chamados de HtmlOptions. O terceiro parmetro para a personalizao da label que ir referenciar o input. O mtodo $Form->textAreaLabel() ir gerar uma tag textArea para o contedo da postagem, ela segue basicamente o mesmo princpio que o inputText. O mtodo $Form->submit() ir gerar um input do tipo submit para enviarmos nosso formulrio. Ele aceita um parmetro para personalizarmos o submit, seja para alterar o css ou para alterar de input para button. A ltima linha o mtodo $Form->close(), que ir gerar uma tag de fechamento do formulrio. 15

Agora vamos voltar para nosso index e atualiza-lo com um link para adicionarmos as postagens. Aps o fechamento da tabela adicione:
{$Html->actionLink(Adicionar Postagem, add, posts)}

Voc deve estar se perguntando como eu falo para o EasyFw sobre minhas regras de validaes. Elas so informadas no nosso modelo. Vamos ver nosso modelo Post com algumas alteraes
< ?php namespace App\Model; class Post extends AppModel { public $id; /** * @NotEmpty */ public $titulo; /** * @NotEmpty */ public $conteudo; }

A validao chamada quando chamamos o mtodo save(). Aqui ns especificamos que as propriedades $titulo e $conteudo no podem ser vazias (@NotEmpty). A API de validao do EasyFw j vem com diversas validaes pr-definidas (carto de crdito, email, telephone, etc.) e flexveis para voc criar suas prprias validaes. Para mais detalhes confira a sesso Validao de Dados. Agora que temos nossa validao pronta, tente incluir uma postagem sem o contedo e veja o que acontece. Desde que ns utilizamos FormHelper::inputText() as mensagens de validao so mostradas automaticamente.

Editando Postagens
A partir desse momento voc j um professional no EasyFw, ento voc deve escolher um padro. Crie a action e depois a view. Aqui ns temos a action edit() do nosso PostsController:

17

< ?php public function edit($id = null) { $this->Post->id = $id; if ($this->request->is(get)) { $postagem = $this->Post->read() ; $this->postagem = $postagem; } else { if ($this->Post->save($this->data)) { $this->Session->setFlash(Sua postagem foi atualizada.) ; $this->redirectToAction(index) ; } else { $this->Session->setFlash(No pudemos atualizar sua postagem) ; } } }

A ao verifica se o request veio via GET. Se veio, ento ns procuramos a postagem no banco de dados e passamos para a view. Se a requisio vier via POST ento ns vamos salvar o registro, ou retornar os erros de validao. A view da action edit() ser assim.
{block name=content} <div class="page-header"> <h1>{__("Editar Postagem")}</h1> </div> {$Form->create(edit, posts, $postagem->id)} {$Form->inputTextLabelFor($postagem->titulo, titulo)} {$Form->textAreaLabelFor($postagem->conteudo, conteudo, [rows=>3])} {$Form->submit(Salvar, [class => btn])} {$Form->close()} {/block}

A view ir renderizar o formulrio j populado com a postagem. Uma coisa importante saber que o EasyFw ir assumir que voc quer atualizar um registro graas ao parmetro id, que ns estamos informando no formulrio.

Excluindo Postagens

A lgica de excluso das postagens bem simples. O fluxo segue a mesma lgica da edio: o usurio ir acessar a action delete passando um id como parmetro, se a requisio for via GET iremos mostrar uma tela de confirmao da excluso do registro, nessa tela enviaremos uma requisio post para a action delete, ento poderemos deletar o registro e redirecionalo para a index novamente. Vamos criar a action para excluir a postagem no nosso PostsController.
< ?php public function delete($id = null) { if ($this->request->is(post)) { $this->Post->delete($id); $this->redirectToAction(index); } else { $this->postagem = $this->Post->getEntityManager()->read($id); }

Agora precisamos criar a view de confirmao da excluso da postagem


{block name=content} <div class="page-header"> <h1>{__("Excluso da postagem %s", $postagem->id)}</h1> </div> {$Form->create(delete, posts, $postagem->id)} {$Form->label(Ttulo da Postagem)} {$Form->label($postagem->titulo)} {$Form->submit(Excluir, [class => btn])} {$Form->close()} {/block}

Com isso ns j temos o fluxo da excluso das postagens. Muito simples no?

19

Rotas
Para alguns, as rotas padro do EasyFw so o suficiente para trabalhar. Alguns desenvolvedores so mais sensveis quanto as URL amigveis que ajudam na indexao das Engines de busca. Ento para esses desenvolvedores desenvolvemos uma forma de mapear rotas na aplicao. Ento para deixar tudo mais interessante vamos fazer algumas mudanas nesse tutorial. For more information on advanced routing techniques, see Routes Configuration. Por padro, quando o usurio realiza uma requisio para a raiz da aplicao (ex.: http://www.example.com) o EasyFw ir direciona-lo para o controller padro HomeController e ir chamar uma action chamada index(). Vamos alterar esse comportamento e pedir para o EasyFw setar como controller padro nosso PostsController. O arquivo de rotas do EasyFw est em App/Config/route.yml E ficara mais ou menos assim:
Routing: connect: # Here, we are connecting '/' (base path) to controller called 'Home', its action called 'index' '/': {controller: Posts, action: index}

Essa linha conecta a URL / que a raiz da aplicao com o PostsController chamando a action index(), isso significa que podemos criar diversas rotas diferentes e direcion-los para qualquer controller em qualquer action(). Uma observao, o EasyFw usa as rotas reversas, ou seja, voc pode passar o nome do controller o nome da action como um array indexado, igual no exemplo acima, mas tambm poderia passar apenas como uma string, dessa forma posts/index.

Concluso
Criar aplicaes dessa forma ir poupar tempo e dinheiro, alm de ficar muito mais divertido codificar sua aplicao. Simples n? Tenha em mente que esse foi apenas um simples tutorial, o EasyFw tem muito mais ferramentas interessantes que merecem ser estudas, elas deixaram sua aplicao mais flexvel e poderosa. Agora que voc criou uma aplicao bsica como o EasyFw voc est pronto para um projeto de verdade. Comece o seu prprio projeto e leia nossa API (http://easyframework.net/2.x/api). Se voc precisar de ajuda, participe do nosso frum. Bem-vindo ao EasyFw!

Sugestes de leitura
Essas so tarefas comuns quando utilizamos o EasyFw: 1. Layouts: Customizando o layout de sua aplicao 2. Uma pequena aplicao utilizando Autenticao e Autorizao : Autenticao e Autorizao de usurios

21

Leitura Adicional
Uma requisio tpica no EasyFw
Ns cobrimos os ingredientes bsicos do EasyFw, ento vamos dar uma olhada em uma requisio bsica. Continuando com o exemplo principal, imagine que nosso amigo Ricardo clicou em comprar um livro. 1. Ricardo clica em um link que aponta para http://www.example.com/livros/comprar e o browser dele fez uma requisio para o servidor.

Figura 1Diagrama de Fluxo do EasyFw

2. O Router ir decodificar a URL para extrair parmetros para a requisio, nessa ordem: O controller, action, e qualquer argumento que afete a lgica de negcio da aplicao. 3. Usando rotas, a URL requisitada mapeada para uma action de um controller. Nesse caso, o mtodo comprar() do controller LivrosController. O callback beforeFilter() chamado antes que qualquer action seja executada. 4. O controller poder estar utilizando Modelos para acessar dados da aplicao. Nesse exemplo o controller usa um modelo para acessar as ltimas compras do Ricardo. Qualquer call-back do modelo, datasources e behaviors sero utilizados nesse instante. 5. Depois que o modelo recuperou os dados e retornou para o controller, outros call-backs do modelo sero disparados. 6. O controller poder utilizar componentes para realizar operaes especificas (manipulao de sesso, autenticao ou enviar e-mails por exemplo). 7. Uma vez que o controller utilizou os modelos e componentes para ter dados suficientes para realizar a operao, esses dados so passados para a view caso necessrio. Os call-backs so disparados antes de renderizar a view. A lgica da view realizada, podendo incluir elementos e helpers. Por padro uma view e renderizada dentro de um layout. 8. Callbacks adicionais so disparados (como o afterFilter). A renderizao completada e enviada para o browser do Ricardo.

Convenes do EasyFw
Ns gostamos de utilizar configuraes por convenes, isso ir ajud-lo a poupar tempo: seguindo as convenes, voc tem funcionalidades prontas e evita estar sempre reconfigurando os arquivos de configuraes. As convenes so bem flexveis, e permitem que voc tenha suas prprias convenes, evitando estar engessado ao framework. Programe da maneira que voc gosta, mas siga um padro.

Convenes dos Controllers


Os nomes dos controllers devem ser no plural e no formato CamelCase terminado com Controller. PostsController e LivrosController so exemplos dessa conveno. O primeiro mtodo que voc deve ter em seu controller o index(). Quando uma requisio especificar apenas o controller e no a action, automaticamente esse mtodo chamado no controller. Por exemplo, uma requisio para http://www.example.com/produtos/ mapeado para chamado o mtodo index() do controller ProdutosController. Ateno: Mtodos privados no podem ser chamados por uma URL.

23

Convenes para Arquivos e nomes de Classes


No geral, o nome dos arquivos seguem o mesmo nome das classes, que so em CamelCase. Ento se voc tiver uma classe MinhaClasse, o nome do arquivo dever ser MinhaClasse.php. Abaixo seguem alguns exemplos: O controller BeijosEAbracosController ter o arquivo com o nome BeijosEAbracosController.php O componente MeuComponenteComponent ter o arquivo MeuComponenteComponent.php O modelo Opcoes ser encontrado no arquivo Opcoes.php

Convenes de Modelos e Banco de dados


Os modelos normalmente so classes no singular e no formato CamelCase. Pessoa e AmigosFavoritos so exemplos de modelos. As tabelas do banco de dados so no plural e com underscore. As tabelas para os modelos acima seriam: pessoas e amigos_favoritos. Chaves estrangeiras com relacionamentos hasMany, belongsTo ou hasOne so reconhecidos por padro pelo tabela que est sendo relacionada seguido da chave primria. Por exemplo uma relao entre uma tabela de Vendas que tem uma pessoa relacionada, a chave estrangeira de pessoa na tabela vendas ficaria assim pessoa_id.

Convenes das Views


As views seguem o mesmo padro das actions, ou seja, caso voc tinha uma action comprarLivros() a view dever ser nomeada como comprarLivros.tpl. Seguindo essas convenes ficar bem mais simples trabalhar, j que tudo ser realizado automaticamente pelo EasyFw. Aqui est o exemplo final das convenes: Tabela do Banco: pessoas Classe Modelo: Pessoa, encontrada em /App/Model/Pessoa.php Classe Controller: PessoasController, encontrada em /App/Controller/PessoasController.php Template da View, encontrada em /App/View/Pages/Pessoas/index.tpl

Estrutura de pastas do EasyFw


Depois de baixar o Easy Skeleton Application voc ver as seguintes pastas: App vendors .htaccess README Voc notar duas pastas principais: A pasta App onde voc ir trabalhar e criar sua aplicao. A pasta vendors, onde colocaremos todas as bibliotecas PHP de terceiros. Nessa pasta tambm est a pasta do EasyFw, seguindo o padro do Composer.

A pasta App
Vamos analisar a principal pasta do EasyFw onde, voc ir trabalhar. Config Esto todas as configuraes da aplicao. Controller Contm os controllers e components da aplicao. Locale Armazena s strings de internacionalizao. Model Contm os models, behaviors e datasources da aplicao. tmp Aqui o EasyFw armazena dados temporrios como cache, logs e descries dos modelos. View - Arquivos de apresentao so armazenados aqui. Elementos, Pages, Layouts. webroot So seus arquivos pblicos, ou seja, os CSS, JS e imagens de sua aplicao.

Estendendo o EasyFw
Controllers e models cada um deles tem sua classe me para definir comportamentos para todos eles. AppController (localizado em /App/Controller/AppController.php) e AppModel (localizado em /App/Model/AppModel.php)

25

Estendendo Controllers Components


Um componente uma classe que adiciona lgica ao controller. Se voc tem alguma lgica que pode ser compartilhada entre os controllers (ou aplicaes) um componente pode ser uma tima jogada. Um exemplo, o EmailComponent do EasyFw facilita o envio e recebimento de e-mail. Melhor do que escrever um controller que ir conter uma lgica engessada, voc pode empacota-la para que ela seja compartilhada. Controllers tambm possuem callbacks. Esses callbacks esto disponveis para uso, apenas no caso de voc precisar de alguma lgica entre as operaes do EasyFw. Os call-back disponveis so: beforeFilter(), executado antes que qualquer action seja executada beforeRender(), executado antes que uma view seja renderizada afterFilter(), executado aps que uma action seja chamada incluindo a renderizao da view.

Estendendo s Views - Helpers


Um Helper uma classe que adiciona lgica nas view. Bem parecido com um componente, helpers podero ser compartilhados entre as views.

También podría gustarte