SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Performance de verdade com
Phalcon Framework
Jaime da Costa Pereira Neto
http://jaimeneto.com
contato@jaimeneto.com
github.com/jaimeneto
Jaime Neto
➔ Graduado em Telemática pelo CEFET-PB (atual IFPB)
➔ Especialista em Desenvolvimento para Web pela UNIBRATEC (atual Estácio iDez)
➔ Zend Certified Engineer - Zend Framework
➔ Trabalha como Analista de Sistemas no Instituto Chico Mendes de Conservação da
Biodiversidade (ICMBio)
➔ Membro do PHP-PB desde os primórdios
Você conhece o Phalcon?
➔Full stack Framework PHP
➔Lançado em 2012
➔Versão atual: 3.1.1
➔Traduzido para 38 idiomas (inclusive Português)
➔Open source (BSD License)
➔Baixo acoplamento
Informações
Mas o que ele oferece?
Recursos
➔MVC e HMVC
➔Dependency Injection
➔Rest
➔Autoloader
➔Router
➔ORM
➔Cache
➔Template Engine
➔i18n
➔Forms
➔Flash Messages
➔ACL
➔Sharding
➔Crypt
E qual é o verdadeiro diferencial?
➔Funciona como uma extensão de servidor web, escrita em linguagem C
◆ Velocidade de execução maior (não precisa processar os arquivos PHP do framework)
◆ Consegue lidar com mais solicitações HTTP por segundo
◆ Quantidade menor de arquivos
Performance
E as desvantagens?
➔Funciona como uma extensão de servidor web, escrita em linguagem C
◆ Dificulta a depuração do código
◆ Pode haver uma curva de aprendizado maior
◆ Caso algo dê errado, você poderá ter que depurar código em C
◆ Pode haver dificuldades para atualização de versão no servidor
Desvantagens
Ele faz isso tudo sozinho?
➔A partir da versão 2.0 o Phalcon passou a utilizar o Zephir
◆ Linguagem de alto nível projetada para facilitar a criação e manutenção de extensões para PHP
◆ Open source (MIT license)
◆ Desenvolvimento com linguagens compiladas perdem na produtividade, mas ganham na
performance. A idéia do Zephir é ter o melhor dos dois mundos.
◆ https://zephir-lang.com
E só existe uma forma de usar?
➔Ferramenta RAD (Rapid Application Development)
◆ Permite criar rapidamente o esqueleto da aplicação
◆ Permite gerar partes da aplicação de acordo com a necessidade (module, controller, model)
◆ Gera CRUD completo baseado nas tabelas do Banco de Dados
◆ Funciona como script de linha de comando
◆ Oferece uma opção visual para ser usada via browser
Devtools
phalcon create-project blog simple --enable-webtools
phalcon scaffold --table-name posts
phalcon create-controller --name users
phalcon create-model --name users
Devtools
➔Usando a linha de comando (Exemplo)
◆ Criar projeto blog com estrutura simples e ativar webtools
◆ Criar toda estrutura CRUD da tabela posts (controller, model, telas de busca, cadastro, alteração,
exclusão, lista)
◆ Criar controller e model de users
Webtools
➔ 17 sugestões de estrutura
➔ https://github.com/phalcon/mvc
simple
├── apps
│ ├── controllers
│ │ ├── IndexController.php
│ │ └── ProductsController.php
│ ├── models
│ │ └── Products.php
│ └── views
│ └── products
│ └── index.phtml
└── public
└── index.php
MVC
multiple
├── apps
│ ├── backend
│ │ ├── Module.php
│ │ ├── controllers
│ │ │ ├── IndexController.php
│ │ │ ├── LoginController.php
│ │ │ └── ProductsController.php
│ │ ├── models
│ │ │ └── Products.php
│ │ └── views
│ │ ├── login
│ │ │ └── index.phtml
│ │ └── products
│ │ └── index.phtml
│ └── frontend
│ ├── Module.php
│ ├── controllers
│ │ ├── IndexController.php
│ │ ├── ProductsController.php
│ │ └── UsersController.php
│ ├── models
│ │ └── Products.php
│ └── views
│ ├── index
│ │ └── index.phtml
│ └── products
│ └── index.phtml
└── public
└── index.php
multiple-shared-views
├── apps
│ ├── common
│ │ └── views
│ │ ├── index
│ │ │ └── index.phtml
│ │ ├── index.phtml
│ │ └── products
│ │ └── index.phtml
│ └── modules
│ ├── backend
│ │ ├── Module.php
│ │ ├── controllers
│ │ │ ├── IndexController.php
│ │ │ └──
ProductsController.php
│ │ └── models
│ │ └── Products.php
│ └── frontend
│ ├── Module.php
│ └── controllers
│ └── IndexController.php
└── public
└── index.php
➔ Phalcon pode funcionar também como um micro-framework
➔Opção mais adequada para implementar pequenas aplicações, APIs e protótipos
➔O site do phalcon foi feito como micro app: https://github.com/phalcon/website
➔Micro app gerado com Devtools:
micro
├── config
│ └── config.php
├── index.html
├── public
│ └── index.php
└── views
├── 404.phtml
└── index.phtml
Micro
➔Mecanismo de Templates
◆ Escrito em Zephic/C para PHP
◆ Oferece helpers para facilitar no
desenvolvimento das views
◆ Integrado com outros componentes
do Phalcon
◆ Pode ser usado separadamente do Phalcon
◆ O phalcon gera cache dos templates para ganho de performance
Volt
{# app/views/products/show.volt #}
{% block last_products %}
{% for product in products %}
* Name: {{ product.name|e }}
{% if product.status == 'Active' %}
Price: {{ product.price + product.taxes/100}}
{% endif %}
{% endfor %}
{% endblock %}
Onde isso nos leva?
➔Consulta única ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016)
Benchmark
➔Múltiplas consultas ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016)
Benchmark
➔Site Oficial: https://phalconphp.com/pt/
➔Blog Oficial: https://blog.phalconphp.com
➔Github Oficial: https://github.com/phalcon
➔Listas de sites feitos em phalcon:
◆ https://github.com/phalcon/cphalcon/wiki/Powered-by-Phalcon
◆ https://builtwith.phalconphp.com
➔Sua Escolha (Projeto do PHP-PB)
◆ https://github.com/php-pb/Sua-escolha
Links
➔Projeto Phalcon Brasil
◆ http://phalconbrasil.com.br
◆ Apoio:
https://www.soloweb.com.br
Convite
Dúvidas?
<?php
$contato = [
‘nome’ => ‘Jaime Neto’,
‘email’ => ‘contato@jaimeneto.com’,
‘blog’ => ‘http://jaimeneto.com’,
‘twitter’ => ‘@jaimecpn’
];
var_dump($contato);
?>
Muito obrigado!

Mais conteúdo relacionado

Mais procurados

Criando API Rest no Zend Framework 2
Criando API Rest no Zend Framework 2Criando API Rest no Zend Framework 2
Criando API Rest no Zend Framework 2Rankest
 
Mini Curso Zend Framework
Mini Curso Zend FrameworkMini Curso Zend Framework
Mini Curso Zend FrameworkAdler Medrado
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHPAdler Medrado
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoGuilherme Heynemann Bruzzi
 
Zend Framework 1.11
Zend Framework 1.11Zend Framework 1.11
Zend Framework 1.11Cezar Souza
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoFlávio Lisboa
 
Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Renzo Nuccitelli
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaPaulo César M Jeveaux
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCFlávio Lisboa
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScriptDan Vitoriano
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...iMasters
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDomingos Teruel
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 

Mais procurados (20)

Criando API Rest no Zend Framework 2
Criando API Rest no Zend Framework 2Criando API Rest no Zend Framework 2
Criando API Rest no Zend Framework 2
 
Mini Curso Zend Framework
Mini Curso Zend FrameworkMini Curso Zend Framework
Mini Curso Zend Framework
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Panorama atual do PHP
Panorama atual do PHPPanorama atual do PHP
Panorama atual do PHP
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do código
 
Zend Framework 1.11
Zend Framework 1.11Zend Framework 1.11
Zend Framework 1.11
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimorado
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua Python Brasil[9] - Entrega Contínua
Python Brasil[9] - Entrega Contínua
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo Java
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
 
Unit Test JavaScript
Unit Test JavaScriptUnit Test JavaScript
Unit Test JavaScript
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend Framework
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 

Semelhante a Performance de verdade com Phalcon Framework

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
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
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveiselliando dias
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Phalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações IniciaisPhalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações IniciaisPauloRobertoBolsanel
 
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
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-phpBrenno Abreu
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
WordCamp SP 2019 - PeachPie unindo Php com C# .Net Core
WordCamp SP 2019 - PeachPie unindo Php com C# .Net CoreWordCamp SP 2019 - PeachPie unindo Php com C# .Net Core
WordCamp SP 2019 - PeachPie unindo Php com C# .Net CoreVanessa Valle
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de CakephpCauan Cabral
 

Semelhante a Performance de verdade com Phalcon Framework (20)

Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Cake Php
Cake PhpCake Php
Cake Php
 
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...
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveis
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Phalcon FrameWork - Considerações Iniciais
Phalcon FrameWork - Considerações IniciaisPhalcon FrameWork - Considerações Iniciais
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 5
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
2290494 integrando-flex-com-php
2290494 integrando-flex-com-php2290494 integrando-flex-com-php
2290494 integrando-flex-com-php
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
WordCamp SP 2019 - PeachPie unindo Php com C# .Net Core
WordCamp SP 2019 - PeachPie unindo Php com C# .Net CoreWordCamp SP 2019 - PeachPie unindo Php com C# .Net Core
WordCamp SP 2019 - PeachPie unindo Php com C# .Net Core
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
CakePHP
CakePHPCakePHP
CakePHP
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
Web Offline
Web OfflineWeb Offline
Web Offline
 

Performance de verdade com Phalcon Framework

  • 1. Performance de verdade com Phalcon Framework Jaime da Costa Pereira Neto http://jaimeneto.com contato@jaimeneto.com github.com/jaimeneto
  • 2. Jaime Neto ➔ Graduado em Telemática pelo CEFET-PB (atual IFPB) ➔ Especialista em Desenvolvimento para Web pela UNIBRATEC (atual Estácio iDez) ➔ Zend Certified Engineer - Zend Framework ➔ Trabalha como Analista de Sistemas no Instituto Chico Mendes de Conservação da Biodiversidade (ICMBio) ➔ Membro do PHP-PB desde os primórdios
  • 3. Você conhece o Phalcon?
  • 4. ➔Full stack Framework PHP ➔Lançado em 2012 ➔Versão atual: 3.1.1 ➔Traduzido para 38 idiomas (inclusive Português) ➔Open source (BSD License) ➔Baixo acoplamento Informações
  • 5. Mas o que ele oferece?
  • 6. Recursos ➔MVC e HMVC ➔Dependency Injection ➔Rest ➔Autoloader ➔Router ➔ORM ➔Cache ➔Template Engine ➔i18n ➔Forms ➔Flash Messages ➔ACL ➔Sharding ➔Crypt
  • 7. E qual é o verdadeiro diferencial?
  • 8. ➔Funciona como uma extensão de servidor web, escrita em linguagem C ◆ Velocidade de execução maior (não precisa processar os arquivos PHP do framework) ◆ Consegue lidar com mais solicitações HTTP por segundo ◆ Quantidade menor de arquivos Performance
  • 10. ➔Funciona como uma extensão de servidor web, escrita em linguagem C ◆ Dificulta a depuração do código ◆ Pode haver uma curva de aprendizado maior ◆ Caso algo dê errado, você poderá ter que depurar código em C ◆ Pode haver dificuldades para atualização de versão no servidor Desvantagens
  • 11. Ele faz isso tudo sozinho?
  • 12. ➔A partir da versão 2.0 o Phalcon passou a utilizar o Zephir ◆ Linguagem de alto nível projetada para facilitar a criação e manutenção de extensões para PHP ◆ Open source (MIT license) ◆ Desenvolvimento com linguagens compiladas perdem na produtividade, mas ganham na performance. A idéia do Zephir é ter o melhor dos dois mundos. ◆ https://zephir-lang.com
  • 13. E só existe uma forma de usar?
  • 14. ➔Ferramenta RAD (Rapid Application Development) ◆ Permite criar rapidamente o esqueleto da aplicação ◆ Permite gerar partes da aplicação de acordo com a necessidade (module, controller, model) ◆ Gera CRUD completo baseado nas tabelas do Banco de Dados ◆ Funciona como script de linha de comando ◆ Oferece uma opção visual para ser usada via browser Devtools
  • 15. phalcon create-project blog simple --enable-webtools phalcon scaffold --table-name posts phalcon create-controller --name users phalcon create-model --name users Devtools ➔Usando a linha de comando (Exemplo) ◆ Criar projeto blog com estrutura simples e ativar webtools ◆ Criar toda estrutura CRUD da tabela posts (controller, model, telas de busca, cadastro, alteração, exclusão, lista) ◆ Criar controller e model de users
  • 17. ➔ 17 sugestões de estrutura ➔ https://github.com/phalcon/mvc simple ├── apps │ ├── controllers │ │ ├── IndexController.php │ │ └── ProductsController.php │ ├── models │ │ └── Products.php │ └── views │ └── products │ └── index.phtml └── public └── index.php MVC multiple ├── apps │ ├── backend │ │ ├── Module.php │ │ ├── controllers │ │ │ ├── IndexController.php │ │ │ ├── LoginController.php │ │ │ └── ProductsController.php │ │ ├── models │ │ │ └── Products.php │ │ └── views │ │ ├── login │ │ │ └── index.phtml │ │ └── products │ │ └── index.phtml │ └── frontend │ ├── Module.php │ ├── controllers │ │ ├── IndexController.php │ │ ├── ProductsController.php │ │ └── UsersController.php │ ├── models │ │ └── Products.php │ └── views │ ├── index │ │ └── index.phtml │ └── products │ └── index.phtml └── public └── index.php multiple-shared-views ├── apps │ ├── common │ │ └── views │ │ ├── index │ │ │ └── index.phtml │ │ ├── index.phtml │ │ └── products │ │ └── index.phtml │ └── modules │ ├── backend │ │ ├── Module.php │ │ ├── controllers │ │ │ ├── IndexController.php │ │ │ └── ProductsController.php │ │ └── models │ │ └── Products.php │ └── frontend │ ├── Module.php │ └── controllers │ └── IndexController.php └── public └── index.php
  • 18. ➔ Phalcon pode funcionar também como um micro-framework ➔Opção mais adequada para implementar pequenas aplicações, APIs e protótipos ➔O site do phalcon foi feito como micro app: https://github.com/phalcon/website ➔Micro app gerado com Devtools: micro ├── config │ └── config.php ├── index.html ├── public │ └── index.php └── views ├── 404.phtml └── index.phtml Micro
  • 19. ➔Mecanismo de Templates ◆ Escrito em Zephic/C para PHP ◆ Oferece helpers para facilitar no desenvolvimento das views ◆ Integrado com outros componentes do Phalcon ◆ Pode ser usado separadamente do Phalcon ◆ O phalcon gera cache dos templates para ganho de performance Volt {# app/views/products/show.volt #} {% block last_products %} {% for product in products %} * Name: {{ product.name|e }} {% if product.status == 'Active' %} Price: {{ product.price + product.taxes/100}} {% endif %} {% endfor %} {% endblock %}
  • 20. Onde isso nos leva?
  • 21. ➔Consulta única ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016) Benchmark
  • 22. ➔Múltiplas consultas ao banco de dados Fonte: www.techempower.com/benchmarks (16/11/2016) Benchmark
  • 23. ➔Site Oficial: https://phalconphp.com/pt/ ➔Blog Oficial: https://blog.phalconphp.com ➔Github Oficial: https://github.com/phalcon ➔Listas de sites feitos em phalcon: ◆ https://github.com/phalcon/cphalcon/wiki/Powered-by-Phalcon ◆ https://builtwith.phalconphp.com ➔Sua Escolha (Projeto do PHP-PB) ◆ https://github.com/php-pb/Sua-escolha Links
  • 24. ➔Projeto Phalcon Brasil ◆ http://phalconbrasil.com.br ◆ Apoio: https://www.soloweb.com.br Convite
  • 25. Dúvidas? <?php $contato = [ ‘nome’ => ‘Jaime Neto’, ‘email’ => ‘contato@jaimeneto.com’, ‘blog’ => ‘http://jaimeneto.com’, ‘twitter’ => ‘@jaimecpn’ ]; var_dump($contato); ?>