Criador e Palestrante: Ítalo Lelis de Vietro
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.
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
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.
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).
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
O Padrão MVC no EasyFW
Ciclo de Vida

                Controller                Components




       View                    Model




                                                   DB
      Helpers
                             Datasource

                                                   DB
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{

}
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.
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‟;
       }
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);
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
                                )
               )
       );
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>
Hierarquia das Views


            Layouts
              Elements



View         View        View
 Elements     Elements    Elements
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
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).
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?
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;
    }

}
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
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‟));
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_MESSAGES
             o default.po
             o default.mo

   o   en_us
         • LC_MESSAGES
             o default.po
             o 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 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.
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éditos
Smarty 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” => italolelis@lellysinformatica.com

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

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

Palestra

  • 1.
    Criador e Palestrante:Ítalo Lelis de Vietro
  • 2.
    Um pouco sobremim 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 vamosabordar 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 foicriado 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 MVCno EasyFW Ciclo de Vida Controller Components View Model DB Helpers Datasource DB
  • 8.
    Controllers Os controllers recebemas 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 adicionamfuncionalidade 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 secomportam 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 simplesdefiniçã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 simplesdefiniçã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>
  • 14.
    Hierarquia das Views Layouts Elements View View View Elements Elements Elements
  • 15.
    View Engines No EasyFwvocê 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 exigemuma 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 Podemosutilizar 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 algunsframeworks, 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 Paracriar 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çõesmulti-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 Masagora 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 Agoraque 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 umaAPI 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 definirquais 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 podermosbaixar 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
  • 27.
    Créditos Smarty Template Engine- http://www.smarty.net Spaghetti * Framewok – http://spaghettiphp.com.br CakePHP Framework - http://cakephp.org Camisetas: Flávio Cordeiro
  • 28.
    Obrigado $contato = array( “e-mail” => italolelis@lellysinformatica.com “Lellys Informática” => www.lellysinformatica.com “EasyFw” => www.easyframework.net );