SlideShare ist ein Scribd-Unternehmen logo
1 von 28
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
   );

Weitere ähnliche Inhalte

Was ist angesagt?

Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Pythonantonio sérgio nogueira
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPSérgio Vilar
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução práticaJosé Barros
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 

Was ist angesagt? (20)

Python cherrypy
Python cherrypyPython cherrypy
Python cherrypy
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
 
Desenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHPDesenvolvimento Web com CakePHP
Desenvolvimento Web com CakePHP
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
O framework spring
O framework springO framework spring
O framework spring
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução prática
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
 
PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 

Andere mochten auch

The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source CreativitySara Cannon
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)maditabalnco
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Andere mochten auch (6)

Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...
 
Open Source Creativity
Open Source CreativityOpen Source Creativity
Open Source Creativity
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Ähnlich wie Palestra

Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2lfernandomcj
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de CakephpCauan Cabral
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Corelacerda2
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 

Ähnlich wie Palestra (20)

Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Cake Php
Cake PhpCake Php
Cake Php
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 

Palestra

  • 1. Criador e Palestrante: Ítalo Lelis de Vietro
  • 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>
  • 14. Hierarquia das Views Layouts Elements View View View Elements Elements Elements
  • 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
  • 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 );