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

Phalcon FrameWork - Considerações Iniciais

  • 1.
    Phalcon FrameWork Um FrameWorkPHP 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 frameworkfull 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 Bancode 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 Phalcon822,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  Disponibilidadeem 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 haveruma 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ê podetrabalhar 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 antiSQL-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 – Filtere 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 ModelView 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 RobertoBolsanello E-mail: pr2desenvolvimento@gmail.com Site/Blog: www.paulorb.com