O Phalcon é um framework PHP open source e full-stack desenvolvido como uma extensão C para melhor desempenho. Foi lançado em 2012 e é considerado o framework PHP mais rápido devido à sua arquitetura em C. O Phalcon suporta diversos bancos de dados, servidores web e possui componentes como ORM, router, cache, forms e segurança para facilitar o desenvolvimento web.
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;
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