Palestra
-
Upload
italo-lelis-de-vietro -
Category
Technology
-
view
671 -
download
5
Transcript of Palestra
Criador e Palestrante: Ítalo Lelis de Vietro
Um pouco sobre mimMeu nome é Ítalo Lelis de Vietro sou de Curitiba e atualmente moro em João Pessoa, estou cursando Análise e Desenvolvimento de Sistemas na Faculdade iDEZ.
Linguagens: VB 6, VB.NET, C#, F#, PHP, Javascript.
Marcações: HTML5, CSS3.
Frameworks: jQuery, CakePHP, Yii Framework, Symfony, Easy Framework.
O que vamos abordarEasyFramework Características
• O que é o EasyFramework.
• Por que utilizar.
• Requisitos.
• Controllerso Components
• Modelso Datasources
• Viewso Elementso Helpers
• Segurança• Cache• Coleções• Internacionalização e Localização• Aplicações RestFul
O que é o Easy Framework
O Easy Framework é um framework de desenvolvimento ágil e eficiente para aplicações escritas em PHP, seguindo os padrões mais adotados pelo mercado atual como o MVC e o ORM, você constroi aplicações robustas, seguras e poderosas em pouco tempo de desenvolvimento.
Baseado em bons frameworks como o Spaguetti* e o CakePHP.
• Extremamente fácil configurar (arquivos YAML).
• Integração com qualquer banco de dados*.
• Adota as boas práticas de programação e padrões de projetos.
• MVC (Model View Controllrer)
• Object Relational Mapping (ORM)
• Código Orientado a Objetos.
• Possui a camada de abstração das views (Smarty).
• Possui uma licença flexível (MIT License).
Por que utilizar?
RequisitosO EasyFramework foi criado para rodar nos servidores web mais populares do mercado. Mas apesar dessa flexibilidade deve seguir algumas obrigações:
• Servidor Apache 2.0 ou mais recente;• Rewrite Module habilitado• Permissão de uso para .htaccess (AllowOverride
Options FileInfo)• PHP 5.2.4
O Padrão MVC no EasyFW
Ciclo de Vida
Controller
View Model
DBDatasourc
e
DB
Components
Elements
Helpers
ControllersOs controllers recebem as requisições do usuário e repassam para o modelo que vai tratar, validar e retornar os dados necessários para que o controller renderize uma view para o usuário com as informações. No EasyFw nós declaramos um controller dessa forma:
class LivrosController extends AppController{
}
ComponentesOs componentes adicionam funcionalidade ao controller, isso permite isolarmos tarefas repetitivas e reutilizarmos em diversos controllers.
Exemplos de Componentes:o AuthComponent – Realiza a autenticação nas aplicações.o SessionComponent – Controla e manipula Sessões;o EmailComponent – Gerencia o envio de e-mail;o UploadComponent – Controla o upload de arquivos;o FacebookComponent – Gerencia todo o acesso a API do Facebook;
Existem diversos outros componentes que podemos acoplar aos nossos controllers. Outra vantagem é que podemos criar nossos próprios componentes e anexarmos na nossa aplicação.
ModelsOs models se comportam como a camada de negócio do seu projeto, ou seja, eles se responsabilizam por gerenciar quase todos os dados da aplicação, inserindo, recuperando e validando dados.Um model representa o seu modelo de dados.Aqui podemos ver um simples exemplo de uma definição de Modelo:
class Livro extends AppModel{public $name = ‘Livro’;
}
ModelsApós uma simples definição do seu modelo de dados, ele já adquire funções para trabalharmos com recuperação, inserção e validação de dados. Podemos citar algumas funcionalidades:
$options = array(“fields” => array(“id”, “titulo”, “ano”),“conditions” => array(“ano”=> 2012);“order” => 2“limit” => 10
));
$this->Livro->find(Model::FIND_ALL, $options);
ModelsApós uma simples definição do seu modelo de dados, ele já adquire funções para trabalharmos com recuperação, inserção e validação de dados. Podemos citar algumas funcionalidades:
public $validate= array(“titulo” => ”required”,“ano” => “numeric”;“email” => “email”,“sigla” => array(“rule”=> array(
“funcaoPersonalizada”, $params)
));
ViewsUma view é onde serão mostrados os resultados de operações da sua aplicação:View/Layouts/Layout.tpl
<html> <head> </head> <body> {block name=conteudo}{/block} </body></html>
View/Pages/ Livros/index.tpl
{extends file=‘Layout.tpl’}
{block name=conteudo}<h1>{$var}</h1>
{/block}
Hierarquia das ViewsLayouts
Elements
ViewElements
ViewElements
ViewElements
View EnginesNo EasyFw você pode facilmente implementar novas Engines de visualização. Por padrão nós usamos o Smarty, mas nada impede que você use o próprio PHP ou crie sua engine, implementando a interface ITempalteEngine.
Para usar outra engine basta mudar a configuração no arquivo app/Config/application.yml.
View: engine: smarty
View: engine: php
View: engine: twig
SegurançaAplicações web exigem uma grande preocupação com segurança, garantindo a integridade dos dados. O EasyFw traz uma API da segurança pronta para sua aplicação.
• Filtragens de dados com Sanitize.• Scape de dados para as Views.• Geração e validação de Tokens.• Criptografia padrão ou com cifra (128, 256 bits).• Segurança das Sessões.• Suporte a oAuth nativo.• Proteção contra SQL Injection.• Proteção contra CSRF (Cross Site Request Forgery).
CacheTrabalhar com cache é uma grande “sacada” das aplicações web de alta escala. Para esses casos o EasyFw tem uma engine de Cache poderosa. Ela foi baseada na engine do CakePHP.
Como funciona o cache na aplicação?Para trabalharmos com cache precisamos configura-lo no arquivo: app/Config/cache.yml
default: engine: File //Engine que usaremos no cache duration: 250 //Tempo de duração do cache probability: 100 // path: <?php echo CACHE . "\n";?>//Caminho onde o cache será escrito prefix: 'easy_easy_‘ //O prefixo para o cache que será escrito lock: false //Devemos bloquear o arquivo para escrita? serialize: true //Devemos serializar o cache no arquivo?
Usando o CachePodemos utilizar o cache me nossa aplicação para armazenar dados muito acessados, ou consultas pesadas que demoram para retornar resultados.
class Post extends AppModel {
public function newest() { $result = Cache::read('newest_posts'');
if ( ! $result ) { $result = $this->find('all', array(
'order' => 'Post.updated DESC', 'limit' => 10));
Cache::write('newest_posts', $result'); } return $result; }
}
ColeçõesDiferente de alguns frameworks, o Easy Framework trabalha fortemente com coleções, a grande diferença é que o EasyFw tem um grande suporte a coleções muito parecido com a plataforma .NET.
As coleções e Interfaces:
Collection
Object Collection List Hashtable
ICollection
ISortable IList
Criando sua ColeçãoPara criar sua coleção é muito simples, podemos somente extender a classe Collection, e fazer nossas implementações.
class LivroCollection extends Collection{
}
Somente com isso já temos nossa coleção de livros pronta com vários métodos que podem nos ajudar.
$livros = new LivroCollection();$livros->add(new Livro(‘nome’, ‘ano’));
Internacionalização e Localização
Aplicações multi-idiomas é uma realidade entre os desenvolvedores hoje, mas muitos tem dificuldades em implementa-las. O EasyFw tenta amenizar esse trabalho.Para internacionalizarmos uma string, basta chamarmos uma função muito parecida com o gettext() do PHP.
Em qualquer lugar da aplicação:$string = __(‘String Internacionalizável’);
Nas Views:{__(‘String Internacionalizável’)}
Pronto, com isso já aplicamos o suporte a internacionalização na nossa aplicação.
Internacionalização e Localização
Mas agora que tenho todas as minhas strings internacionalizáveis, como faço para traduzi-las?
Podemos utilizar o Programa PoEdit, o que ele faz é escanear seu código PHP e onde ele encontrar essa função __() ele irá gerar um arquivo .po para você criar sua tradução. Basta você colocar esse arquivo dentro da estrutura do EasyFw e pronto, vejamos um exemplo:
App/Locale/o pt_br
• LC_MESSAGESo default.poo default.mo
o en_us• LC_MESSAGES
o default.poo default.mo
Internacionalização e Localização
Agora que já temos tudo traduzido, podemos configurar qual a linguagem que vamos utilizar.
• Podemos deixar nossa aplicação pegar a Preferencia do usuário.
• Podemos setar no arquivo de configuração a língua padrão.
App: encoding: utf-8 language: pt_BR timezone: America/Sao_Paulo
• Podemos setar na sessão uma língua a ser utilizada.Session::write(‘App.language’, ‘pt_BR’);
Aplicações RESTful
Criar uma API pode ser algo muito trabalhoso, então por que não facilitarmos esse trabalho? No EasyFw podemos configurar Rotas, definir métodos de acesso, retornar XML, JSON, e o que for necessário para construirmos nossa API.
Para definirmos rotas podemos acessar o nosso arquivo de configuração app/Config/routes.yml
Routes: connect: '/livros/categoria': {controller: ‘Livros', action: ‘findByCategoria'} '/livros/:fragment': {controller: ‘Livros', action: ‘findByName‘, params: $1}
Aplicações RESTfulPodemos definir quais métodos HTTP serão aceitos por determinados recursos da aplicação:
/** * @REST(“POST”)**/public function adicionarLivro(){ $livros = $this->Livros->find(Model::All);
if($this->request->accepts(‘json’)){ return json_enconde($livros); }elseif ( $this->request->accepts(‘xml’)){ return XML::parse($livros); }}
Isso nos permite criar recursos apenas acessíveis para determinadas requisições.
Como Baixar?Para podermos baixar o core com os demos do Easy Framework basta acessarmos o website:
www.easyframework.net
Se você quiser contribuir para o desenvolvimento do framework, basta fazer um clone de nosso repositório GIT:
o $ git clone git://github.com/LellysInformatica/EasyFramework.git
CréditosSmarty Template Engine - http://www.smarty.net
Spaghetti * Framewok – http://spaghettiphp.com.br
CakePHP Framework - http://cakephp.org
Camisetas: Flávio Cordeiro
Obrigado$contato = array( “e-mail” => [email protected]
“Lellys Informática” => www.lellysinformatica.com
“EasyFw” => www.easyframework.net);