SlideShare uma empresa Scribd logo
1 de 20
Phalcon FrameWork
Um FrameWork PHP entregue como uma extensão em C.
Histórico.
O PHALCON é um framework web para desenvolvimento na linguagen PHP e baseado
no modelo MVC(Model-View-Controller).
A versão inicial foi lançada em 2012 por Andrés Gutierres entre outros colaboradores
com código aberto e mantém-se assim até hoje. Phalcon foi programado em C e
Zephir, também é famoso por ser o primeiro framework a implementar o ORM
(Object-relational mapping) em C e a partir da versão 2.0 teve boa parte de seu
projeto transportado para a linguagem Zephir.
O uso da linguagem C e o fato de ser usado como uma extensão web fazem com que o
Phalcon tenha outro diferencial importante. Ele é considerado o framework mais
rápido disponível. A velocidade de execução é maior e ele também consegue lidar
com mais solicitações HTTP por segundo, se comparado a outros frameworks escritos
em PHP.
Características
E um framework full stack de código-fonte livre para desenvolvimento PHP criado como
uma extensão C e otimizado para possuir um alto desempenho. Também possui baixo
acoplamento e é totalmente MVC permitindo uma utilização parcial ou total de suas
funcionalidades conforme as necessidades do programador (Miller, 2014).
As extensões são funcionalidades extras para a linguagem de programação alvo, que
auxiliam no desenvolvimento de aplicações. O PHP possui cerca de cento e cinquenta
extensões 4 que vem em seu pacote de código fonte oficial, tendo em media duas mil e
quinhentas funções provenientes destas .
Uma extensão C é compilada e carregada juntamente com o PHP quando o servidor web é
iniciado, disponibilizando suas classes e funções para serem utilizadas em qualquer
aplicação no servidor onde está instalado, pois por ser desenvolvido em uma linguagem
compilada seu código fonte não é interpretado (Phalcon, 2014b).
Mesmo phalcon sendo completamente desenvolvido em C, não ´e necessário nenhum
conhecimento desta linguagem de programação para utiliza-lo, pois suas funcionalidades
são disponibilizadas como classes e métodos do PHP.
Suporte a Banco de dados
 Phalcon possui suporte a diversos bancos de dados como MySQL, PostgresSQL
e até a bancos de dados Orientados a Documentos como o MongoDB, além de
vários servidores webs entre eles Apache, Nginx e o Cherokee. Também é
multiplataforma possuindo versões para Linux, Windows ou MacOS.
<?php
use PhalconDbAdapterPdoMysql as DbAdapter;
// Setup the database service
$di->set(
'db',
function () {
return new DbAdapter(
[
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'secret',
'dbname' => 'tutorial1',
]
);
}
);
Exemplo de conexão com o
Banco de Dados MySql
Benchmark Framework Req/Sec
Phalcon 822,96
Slim 399,83
Kohana 217,34
Code Iginiter 187,78
Silex 179,01
Laravel 135,9
Yii 123,5
Fuel PHP 116,34
Hazaar MVC 103,53
Zend 1 103,02
Cake PHP 54,97
Nette 53,48
Symfony2 39,22
Zend 2 36,1
O site Where’s My Keyboard fez um
teste em que o Phalcon conseguiu
mais de 822 mil solicitações por
segundo, mais do que o dobro do
segundo colocado, Slim.
Disponível em:
https://wheresmykeyboard.com/2015/07/performance-benchmark-popular-php-frameworks/
Principais Vantagens
 Disponibilidade em PHP 5.4, 5.5 e 5.6 nas plataformas Windows e Linux;
 DI, Router, ORM, ODM, Cache, Volt, Events, Code generator;
 Até 20x mais rápido comparando com outros Frameworks Fullstack;
 Menor consumo de recursos (até 10x menos consumo de memória);
 Opções Single e Multi módulo;
 Dois tipos de aplicação: Micro e Application;
 Outra vantagem de ser uma extensão, é a quantidade de arquivos. Laravel,
por exemplo, que é inscrito completamente em PHP, inclui vários pacotes via
composer. Já o Phalcon é somente uma extensão a mais no servidor.
 Facilidade de uso;
Desvantagens
 Pode haver uma curva de aprendizado maior;
 Você precisa de uma hospedagem especializada ou ter acesso direto ao
servidor da sua aplicação para a instalação do phalcon;
 Caso algo dê errado, você poderá ter que debugar código em C (versão 2.0 ja
utiliza Zephir);
Estrutura de pastas/Diretórios
 App: a pasta do aplicativo consiste no ponto crucial de toda aplicação. Todas as pastas e
arquivos do script estão contidos na pasta. Especificamente, consiste em:
 Config: Como o nome indica, toda configuração necessária será adicionada dentro da subpasta.
Se deseja adicionar uma nova biblioteca de terceiros ou estabelecer uma conexão de banco de
dados, você pode conseguir colocando um código relevante nos arquivos nesta pasta.
 Controllers: Os controles processam solicitações e formulários de respostas adequadas.
Qualquer controlador que deseja definir se torna parte dessa pasta.
 Library: Todas as bibliotecas externas de terceiros que deseja incluir deve ser adicionadas a
esta pasta.
 Migrations: Se você deseja realizar qualquer migração de dados, então você deve adicionar os
arquivos dentro dessa pasta.
 Models: A pasta consiste em qualquer coisa relacionada aos seus dados. Isso inclui a interação
com o banco de dados para receber informação e apresentar dados.
 Views: As visualizações em uma arquitetura MVC são responsáveis pela exibição de dados para
o usuário. Todas as informações relacionadas a exibição, como conteúdo da página, estão
presentes nesta pasta.
 Cache: O armazenamento em cache desempenha um papel vital na manutenção dos
benchmarks de desempenho e tudo o que está relacionado com isso vai nessa pasta.
 Public: Contém pastas para CSS, JavaScript, metadata, imagens que serão carregadas, os
arquivos que devem ser carregados e alguns dados temporários relacionados a aplicações.
Componentes
 Você pode trabalhar com ele tanto no modo application que te oferece um
MVC completo e no modo micro que não carrega nada do framework e te
permite ir carregando as classes na medida que você for utilizando.
Principais Componentes
 FrontEnd
 View – Camada de Apresentação do MVC;
 Template Engine;
 Volt;
 PHP Puro;
 Você pode incluir outros;
 Flash Messenger;
 Usado para notificar o usuário a respeito de operações, como erros, sucesso,
etc.
 Controle de Assets:
 JavaScript, CSS e Imagens;
Principais Componentes
 FrontEnd – TAG HELPERS
 COMPONENTE PARA CRIAR TAGS HTML;
 Suporte:
 Template Engine Volt;
 PHP Puro;
 Crie seus próprios Helpers;
Principais Componentes
 FrontEnd – Form Builder
 COMPONENTE PARA CRIAR FORMULÁRIOS;
 DESACOPLADO DO TEMPLATE HTML(VIEW);
Componentes
 BackEnd
 DependencyInjection: Como havia sido comentado, o Phalcon só carrega aquilo que
usa. E esse é o responsável por isso.
 ObjectRelational Mapping: Nada de escrever linhas de conexão e sql. Quer achar
um usuário?
 EventManager: Esse serviço permite que você execute ações antes e/ou depois de
cada request. Ou somente para uma classe, totalmente personalizável.
User::find(array(“email”=>”mail@gmail.com”));
Segurança
 Prevenção anti SQL-injection;
 Password Hashing;
 Bcrypt: mais seguro contra ataque de força bruta;
 Proteção Cross-Site Request Forgery(CSRF) na submissão dos forms;
 Encryption/Decryption
 Openssl wrapper
 AES-256-CFB
 Encriptação de cookie por padrão;
Segurança – Filter e Sanitizing
 Remoção de códigos maliciosos no input dos usuários(form data), como SQL-
injections.
<?php
use PhalconMvcController;
class ProductsController extends Controller
{
public function indexAction()
{
}
public function saveAction()
{
// Sanitizing price from input
$price = $this->request->getPost('price', 'double');
// Sanitizing email from input
$email = $this->request->getPost('customerEmail', 'email');
}
}
<?php
use PhalconFilter;
$filter = new Filter();
// Returns 'someone@example.com'
$filter->sanitize('some(one)@example.com', 'email');
// Returns 'hello'
$filter->sanitize('hello<<', 'string');
// Returns '100019'
$filter->sanitize('!100a019', 'int');
// Returns '100019.01'
$filter->sanitize('!100a019.01a', 'float');
Resumo de Recursos
Model View Outros
ORM Template Controller
ODM Asset Routing
PHQL Flash Messenger Cookie
Event Form Builder http Request e Response
Behavior Tag Helper Log
Cache Validation Session
Relationship Filtering ACL
Transaction Saniting Queue Beanstalk
Validator I18n translation Crypto
Pagination Annotation
Migration Image
Ferramenta de Desenvolvimento
 Através do PHALCON DEV TOOLS é possível através do prompt de comando
criar seu projeto já com a estrutura básica de arquivos.
>_ phalcon project devmedia
Criar um novo projeto:
Um novo controller:
>_ phalcon controller Posts
Um no model:
>_ phalcon model --table-name Users
O ORM procura por uma table no banco com as configurações do projeto, mapeia os atributos e gera o model.
Ferramenta de Desenvolvimento
 Além da linha de comando, o phalcon conta com uma interface gráfica para
gerar as controllers, as models e etc.
Referencial de Pesquisa;
 Palestra: https://pt-br.eventials.com/locaweb/desvendando-o-framework-
phalcon-php-com-luiz-gustavo-gavinho/
 https://blog.umbler.com/br/phalcon-php/
 https://phalconphp.com/pt/
 https://www.hostinger.com.br/tutoriais/aprenda-como-configurar-o-
framework-phalcon/
 https://www.devmedia.com.br/melhore-a-performance-com-o-
phalconphp/29237
 https://en.wikipedia.org/wiki/Phalcon_(framework)
 Desenvolvimento Web com Framework Phalcon. Marcos Vinicius O. Silveira.
http://www.comp.uems.br/~PFC/PFC%20170.pdf
Instrutor: Paulo Roberto Bolsanello
E-mail: pr2desenvolvimento@gmail.com
Site/Blog: www.paulorb.com

Mais conteúdo relacionado

Mais procurados

Treinamento Gestão de Tempo e Produtividade
Treinamento Gestão de Tempo e ProdutividadeTreinamento Gestão de Tempo e Produtividade
Treinamento Gestão de Tempo e ProdutividadeRicardo Ferrari Peloi
 
Administração eficaz do tempo
Administração eficaz do tempoAdministração eficaz do tempo
Administração eficaz do tempodanielcosta2013
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Como ter atitude e iniciativa em um ambiente
Como ter atitude e iniciativa em um ambienteComo ter atitude e iniciativa em um ambiente
Como ter atitude e iniciativa em um ambiente09108303
 
Otimização Do Tempo
Otimização Do TempoOtimização Do Tempo
Otimização Do Tempofredgoulart
 
Nutrição na Hipertensão Arterial
Nutrição na Hipertensão ArterialNutrição na Hipertensão Arterial
Nutrição na Hipertensão Arterialyorana mendes
 
Alimentação para uma vida saudável cópia
Alimentação para uma vida saudável   cópiaAlimentação para uma vida saudável   cópia
Alimentação para uma vida saudável cópiaaluisiobraga
 
Gestao tempo aprenda_gerenciar
Gestao tempo aprenda_gerenciarGestao tempo aprenda_gerenciar
Gestao tempo aprenda_gerenciarwdnilmacms
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 
Hábitos De Vida Saudável
Hábitos De Vida SaudávelHábitos De Vida Saudável
Hábitos De Vida Saudávelcdays
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componenteselliando dias
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Uml Diagramas estruturais - parte escrita
Uml   Diagramas estruturais - parte escritaUml   Diagramas estruturais - parte escrita
Uml Diagramas estruturais - parte escritathaisedd
 
Tipos de açúcar (Types of Sugar)
Tipos de açúcar (Types of Sugar)Tipos de açúcar (Types of Sugar)
Tipos de açúcar (Types of Sugar)Carlos Calácio
 

Mais procurados (20)

Treinamento Gestão de Tempo e Produtividade
Treinamento Gestão de Tempo e ProdutividadeTreinamento Gestão de Tempo e Produtividade
Treinamento Gestão de Tempo e Produtividade
 
Administração eficaz do tempo
Administração eficaz do tempoAdministração eficaz do tempo
Administração eficaz do tempo
 
Administração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento EmbaliAdministração do Tempo - Treinamento Embali
Administração do Tempo - Treinamento Embali
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Como ter atitude e iniciativa em um ambiente
Como ter atitude e iniciativa em um ambienteComo ter atitude e iniciativa em um ambiente
Como ter atitude e iniciativa em um ambiente
 
Otimização Do Tempo
Otimização Do TempoOtimização Do Tempo
Otimização Do Tempo
 
Nutrição na Hipertensão Arterial
Nutrição na Hipertensão ArterialNutrição na Hipertensão Arterial
Nutrição na Hipertensão Arterial
 
Gestão do tempo - Reconheça o valor do tempo e se organize!
Gestão do tempo - Reconheça o valor do tempo e se organize!Gestão do tempo - Reconheça o valor do tempo e se organize!
Gestão do tempo - Reconheça o valor do tempo e se organize!
 
Alimentação para uma vida saudável cópia
Alimentação para uma vida saudável   cópiaAlimentação para uma vida saudável   cópia
Alimentação para uma vida saudável cópia
 
Gestao tempo aprenda_gerenciar
Gestao tempo aprenda_gerenciarGestao tempo aprenda_gerenciar
Gestao tempo aprenda_gerenciar
 
Alimentação
AlimentaçãoAlimentação
Alimentação
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Hábitos De Vida Saudável
Hábitos De Vida SaudávelHábitos De Vida Saudável
Hábitos De Vida Saudável
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componentes
 
Farinhas
FarinhasFarinhas
Farinhas
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Uml Diagramas estruturais - parte escrita
Uml   Diagramas estruturais - parte escritaUml   Diagramas estruturais - parte escrita
Uml Diagramas estruturais - parte escrita
 
Como organizar a rotina
Como organizar a rotinaComo organizar a rotina
Como organizar a rotina
 
Tipos de açúcar (Types of Sugar)
Tipos de açúcar (Types of Sugar)Tipos de açúcar (Types of Sugar)
Tipos de açúcar (Types of Sugar)
 

Semelhante a Phalcon FrameWork - Considerações Iniciais

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
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
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
 
Apresentação do Kohana Framework
Apresentação do Kohana FrameworkApresentação do Kohana Framework
Apresentação do Kohana FrameworkAndré Luis
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoMarcos Bezerra
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetosFrancisco Santos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetosFer Nando
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetosFabiano Rodrigues
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 

Semelhante a Phalcon FrameWork - Considerações Iniciais (20)

Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Cake Php
Cake PhpCake Php
Cake Php
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Procergs php-seguro
Procergs php-seguroProcergs php-seguro
Procergs php-seguro
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
Apresentação do Kohana Framework
Apresentação do Kohana FrameworkApresentação do Kohana Framework
Apresentação do Kohana Framework
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Palestra
PalestraPalestra
Palestra
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 

Phalcon FrameWork - Considerações Iniciais

  • 1. Phalcon FrameWork Um FrameWork PHP entregue como uma extensão em C.
  • 2. Histórico. O PHALCON é um framework web para desenvolvimento na linguagen PHP e baseado no modelo MVC(Model-View-Controller). A versão inicial foi lançada em 2012 por Andrés Gutierres entre outros colaboradores com código aberto e mantém-se assim até hoje. Phalcon foi programado em C e Zephir, também é famoso por ser o primeiro framework a implementar o ORM (Object-relational mapping) em C e a partir da versão 2.0 teve boa parte de seu projeto transportado para a linguagem Zephir. O uso da linguagem C e o fato de ser usado como uma extensão web fazem com que o Phalcon tenha outro diferencial importante. Ele é considerado o framework mais rápido disponível. A velocidade de execução é maior e ele também consegue lidar com mais solicitações HTTP por segundo, se comparado a outros frameworks escritos em PHP.
  • 3. Características E um framework full stack de código-fonte livre para desenvolvimento PHP criado como uma extensão C e otimizado para possuir um alto desempenho. Também possui baixo acoplamento e é totalmente MVC permitindo uma utilização parcial ou total de suas funcionalidades conforme as necessidades do programador (Miller, 2014). As extensões são funcionalidades extras para a linguagem de programação alvo, que auxiliam no desenvolvimento de aplicações. O PHP possui cerca de cento e cinquenta extensões 4 que vem em seu pacote de código fonte oficial, tendo em media duas mil e quinhentas funções provenientes destas . Uma extensão C é compilada e carregada juntamente com o PHP quando o servidor web é iniciado, disponibilizando suas classes e funções para serem utilizadas em qualquer aplicação no servidor onde está instalado, pois por ser desenvolvido em uma linguagem compilada seu código fonte não é interpretado (Phalcon, 2014b). Mesmo phalcon sendo completamente desenvolvido em C, não ´e necessário nenhum conhecimento desta linguagem de programação para utiliza-lo, pois suas funcionalidades são disponibilizadas como classes e métodos do PHP.
  • 4. Suporte a Banco de dados  Phalcon possui suporte a diversos bancos de dados como MySQL, PostgresSQL e até a bancos de dados Orientados a Documentos como o MongoDB, além de vários servidores webs entre eles Apache, Nginx e o Cherokee. Também é multiplataforma possuindo versões para Linux, Windows ou MacOS. <?php use PhalconDbAdapterPdoMysql as DbAdapter; // Setup the database service $di->set( 'db', function () { return new DbAdapter( [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'secret', 'dbname' => 'tutorial1', ] ); } ); Exemplo de conexão com o Banco de Dados MySql
  • 5. Benchmark Framework Req/Sec Phalcon 822,96 Slim 399,83 Kohana 217,34 Code Iginiter 187,78 Silex 179,01 Laravel 135,9 Yii 123,5 Fuel PHP 116,34 Hazaar MVC 103,53 Zend 1 103,02 Cake PHP 54,97 Nette 53,48 Symfony2 39,22 Zend 2 36,1 O site Where’s My Keyboard fez um teste em que o Phalcon conseguiu mais de 822 mil solicitações por segundo, mais do que o dobro do segundo colocado, Slim. Disponível em: https://wheresmykeyboard.com/2015/07/performance-benchmark-popular-php-frameworks/
  • 6. Principais Vantagens  Disponibilidade em PHP 5.4, 5.5 e 5.6 nas plataformas Windows e Linux;  DI, Router, ORM, ODM, Cache, Volt, Events, Code generator;  Até 20x mais rápido comparando com outros Frameworks Fullstack;  Menor consumo de recursos (até 10x menos consumo de memória);  Opções Single e Multi módulo;  Dois tipos de aplicação: Micro e Application;  Outra vantagem de ser uma extensão, é a quantidade de arquivos. Laravel, por exemplo, que é inscrito completamente em PHP, inclui vários pacotes via composer. Já o Phalcon é somente uma extensão a mais no servidor.  Facilidade de uso;
  • 7. Desvantagens  Pode haver uma curva de aprendizado maior;  Você precisa de uma hospedagem especializada ou ter acesso direto ao servidor da sua aplicação para a instalação do phalcon;  Caso algo dê errado, você poderá ter que debugar código em C (versão 2.0 ja utiliza Zephir);
  • 8. Estrutura de pastas/Diretórios  App: a pasta do aplicativo consiste no ponto crucial de toda aplicação. Todas as pastas e arquivos do script estão contidos na pasta. Especificamente, consiste em:  Config: Como o nome indica, toda configuração necessária será adicionada dentro da subpasta. Se deseja adicionar uma nova biblioteca de terceiros ou estabelecer uma conexão de banco de dados, você pode conseguir colocando um código relevante nos arquivos nesta pasta.  Controllers: Os controles processam solicitações e formulários de respostas adequadas. Qualquer controlador que deseja definir se torna parte dessa pasta.  Library: Todas as bibliotecas externas de terceiros que deseja incluir deve ser adicionadas a esta pasta.  Migrations: Se você deseja realizar qualquer migração de dados, então você deve adicionar os arquivos dentro dessa pasta.  Models: A pasta consiste em qualquer coisa relacionada aos seus dados. Isso inclui a interação com o banco de dados para receber informação e apresentar dados.  Views: As visualizações em uma arquitetura MVC são responsáveis pela exibição de dados para o usuário. Todas as informações relacionadas a exibição, como conteúdo da página, estão presentes nesta pasta.  Cache: O armazenamento em cache desempenha um papel vital na manutenção dos benchmarks de desempenho e tudo o que está relacionado com isso vai nessa pasta.  Public: Contém pastas para CSS, JavaScript, metadata, imagens que serão carregadas, os arquivos que devem ser carregados e alguns dados temporários relacionados a aplicações.
  • 9. Componentes  Você pode trabalhar com ele tanto no modo application que te oferece um MVC completo e no modo micro que não carrega nada do framework e te permite ir carregando as classes na medida que você for utilizando.
  • 10. Principais Componentes  FrontEnd  View – Camada de Apresentação do MVC;  Template Engine;  Volt;  PHP Puro;  Você pode incluir outros;  Flash Messenger;  Usado para notificar o usuário a respeito de operações, como erros, sucesso, etc.  Controle de Assets:  JavaScript, CSS e Imagens;
  • 11. Principais Componentes  FrontEnd – TAG HELPERS  COMPONENTE PARA CRIAR TAGS HTML;  Suporte:  Template Engine Volt;  PHP Puro;  Crie seus próprios Helpers;
  • 12. Principais Componentes  FrontEnd – Form Builder  COMPONENTE PARA CRIAR FORMULÁRIOS;  DESACOPLADO DO TEMPLATE HTML(VIEW);
  • 13. Componentes  BackEnd  DependencyInjection: Como havia sido comentado, o Phalcon só carrega aquilo que usa. E esse é o responsável por isso.  ObjectRelational Mapping: Nada de escrever linhas de conexão e sql. Quer achar um usuário?  EventManager: Esse serviço permite que você execute ações antes e/ou depois de cada request. Ou somente para uma classe, totalmente personalizável. User::find(array(“email”=>”mail@gmail.com”));
  • 14. Segurança  Prevenção anti SQL-injection;  Password Hashing;  Bcrypt: mais seguro contra ataque de força bruta;  Proteção Cross-Site Request Forgery(CSRF) na submissão dos forms;  Encryption/Decryption  Openssl wrapper  AES-256-CFB  Encriptação de cookie por padrão;
  • 15. Segurança – Filter e Sanitizing  Remoção de códigos maliciosos no input dos usuários(form data), como SQL- injections. <?php use PhalconMvcController; class ProductsController extends Controller { public function indexAction() { } public function saveAction() { // Sanitizing price from input $price = $this->request->getPost('price', 'double'); // Sanitizing email from input $email = $this->request->getPost('customerEmail', 'email'); } } <?php use PhalconFilter; $filter = new Filter(); // Returns 'someone@example.com' $filter->sanitize('some(one)@example.com', 'email'); // Returns 'hello' $filter->sanitize('hello<<', 'string'); // Returns '100019' $filter->sanitize('!100a019', 'int'); // Returns '100019.01' $filter->sanitize('!100a019.01a', 'float');
  • 16. Resumo de Recursos Model View Outros ORM Template Controller ODM Asset Routing PHQL Flash Messenger Cookie Event Form Builder http Request e Response Behavior Tag Helper Log Cache Validation Session Relationship Filtering ACL Transaction Saniting Queue Beanstalk Validator I18n translation Crypto Pagination Annotation Migration Image
  • 17. Ferramenta de Desenvolvimento  Através do PHALCON DEV TOOLS é possível através do prompt de comando criar seu projeto já com a estrutura básica de arquivos. >_ phalcon project devmedia Criar um novo projeto: Um novo controller: >_ phalcon controller Posts Um no model: >_ phalcon model --table-name Users O ORM procura por uma table no banco com as configurações do projeto, mapeia os atributos e gera o model.
  • 18. Ferramenta de Desenvolvimento  Além da linha de comando, o phalcon conta com uma interface gráfica para gerar as controllers, as models e etc.
  • 19. Referencial de Pesquisa;  Palestra: https://pt-br.eventials.com/locaweb/desvendando-o-framework- phalcon-php-com-luiz-gustavo-gavinho/  https://blog.umbler.com/br/phalcon-php/  https://phalconphp.com/pt/  https://www.hostinger.com.br/tutoriais/aprenda-como-configurar-o- framework-phalcon/  https://www.devmedia.com.br/melhore-a-performance-com-o- phalconphp/29237  https://en.wikipedia.org/wiki/Phalcon_(framework)  Desenvolvimento Web com Framework Phalcon. Marcos Vinicius O. Silveira. http://www.comp.uems.br/~PFC/PFC%20170.pdf
  • 20. Instrutor: Paulo Roberto Bolsanello E-mail: pr2desenvolvimento@gmail.com Site/Blog: www.paulorb.com