2. Um pouco sobre mim
Meu 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.
3. O que vamos abordar
EasyFramework Características
• Controllers
o Components
• O que é o
• Models
EasyFramework. o Datasources
• Views
o Elements
• Por que utilizar. o Helpers
• Segurança
• Cache
• Requisitos. • Coleções
• Internacionalização e
Localização
• Aplicações RestFul
4. 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.
5. Por que utilizar?
• 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).
6. Requisitos
O 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
7. O Padrão MVC no EasyFW
Ciclo de Vida
Controller Components
View Model
DB
Helpers
Datasource
DB
8. Controllers
Os 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{
}
9. Componentes
Os 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.
10. Models
Os 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‟;
}
11. Models
Apó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);
12. Models
Apó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
)
)
);
13. Views
Uma view é onde serão mostrados os resultados de
operações da sua aplicação:
View/Layouts/Layout.tpl View/Pages/ Livros/index.tpl
<html> {extends file=„Layout.tpl‟}
<head>
</head> {block name=conteudo}
<body>
<h1>{$var}</h1>
{block name=conteudo}{/block}
{/block}
</body>
</html>
15. View Engines
No 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
16. Segurança
Aplicaçõ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).
17. Cache
Trabalhar 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?
18. Usando o Cache
Podemos 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;
}
}
19. Coleções
Diferente 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:
ICollection
Collection
Object
Collection
List Hashtable ISortable IList
20. Criando sua Coleção
Para 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‟));
21. 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.
22. 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_MESSAGES
o default.po
o default.mo
o en_us
• LC_MESSAGES
o default.po
o default.mo
23. 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‟);
24. 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}
25. Aplicações RESTful
Podemos 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.
26. 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