Palestra

28
Criador e Palestrante: Ítalo Lelis de Vietro

Transcript of Palestra

Page 1: Palestra

Criador e Palestrante: Ítalo Lelis de Vietro

Page 2: Palestra

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.

Page 3: Palestra

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

Page 4: Palestra

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.

Page 5: Palestra

• 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?

Page 6: Palestra

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

Page 7: Palestra

O Padrão MVC no EasyFW

Ciclo de Vida

Controller

View Model

DBDatasourc

e

DB

Components

Elements

Helpers

Page 8: Palestra

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{

}

Page 9: Palestra

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.

Page 10: Palestra

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’;

}

Page 11: Palestra

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);

Page 12: Palestra

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)

));

Page 13: Palestra

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}

Page 14: Palestra

Hierarquia das ViewsLayouts

Elements

ViewElements

ViewElements

ViewElements

Page 15: Palestra

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

Page 16: Palestra

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).

Page 17: Palestra

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?

Page 18: Palestra

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; }

}

Page 19: Palestra

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

Page 20: Palestra

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’));

Page 21: Palestra

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.

Page 22: Palestra

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

Page 23: Palestra

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’);

Page 24: Palestra

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}

Page 25: Palestra

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.

Page 26: Palestra

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

Page 27: Palestra

CréditosSmarty Template Engine - http://www.smarty.net

Spaghetti * Framewok – http://spaghettiphp.com.br

CakePHP Framework - http://cakephp.org

Camisetas: Flávio Cordeiro

Page 28: Palestra

Obrigado$contato = array( “e-mail” => [email protected]

“Lellys Informática” => www.lellysinformatica.com

“EasyFw” => www.easyframework.net);