Slide 1

Slide 1 text

Phalcon PHP framework Its innovative architecture makes Phalcon the fastest PHP framework ever built!

Slide 2

Slide 2 text

O que é Phalcon? ● Framework full stack baseado no padrão MVC; ● Implementado como uma extensão do servidor web escrito em Zephir/C; ● Lançado em 2012; ● Open-source framework - licença BSD; ● 1ª versão em 14 de Novembro de 2012;e ● Phalcon 3.0.0 lançado em 29 de julho de 2016

Slide 3

Slide 3 text

Instalação curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash sudo apt-get install php5-phalcon # Ubuntu 16.04+ or Debian 9+ sudo apt-get install php7.0-phalcon Windows add extension=php_phalcon.dll Suporte para PHP 5.5.x/5.6.x/7.0.x

Slide 4

Slide 4 text

Por que é mais rápido ● Não realiza interpretação de milhares de linhas de código; ● Não carregar dezenas de arquivos por requisição; ● Não revisa a existência de classes, funções, variáveis a cada requisição;

Slide 5

Slide 5 text

● http://benchmark.kotchasan.com/index.php?module=hello ○ https://github.com/kenjis/php-framework-benchmark

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

componentes Principais

Slide 11

Slide 11 text

MVC & HMVC single/ app/ controllers/ models/ views/ public/ css/ img/ js/ Multiple/ apps/ frontend/ controllers/ models/ views/ Module.php backend/ controllers/ models/ views/ Module.php public/

Slide 12

Slide 12 text

Injeção de dependência //Create the Dependency Injector Container $di = new Phalcon\DI(); //Register classes, functions, components $di->set("request", new Phalcon\Http\Request()); //Use anywhere else in code $request = $di->getShared("request");

Slide 13

Slide 13 text

RESTful services use Phalcon\Mvc\Micro; $app = new Micro(); // Returning data in JSON $app->get('/check/status', function () { return $this->response->setJsonContent([ "status" => "important"]); }); $app->handle();

Slide 14

Slide 14 text

Auto-loader use Phalcon\Loader; $loader = new Loader(); $loader->registerNamespaces( array( "Example\Base" => "vendor/example/base/", "Example\Adapter" => "vendor/example/adapter/", ) ); $loader->register();

Slide 15

Slide 15 text

Router $router = new \Phalcon\Mvc\Router(); $router->add( "/admin/users/my-profile", array( "controller" => "users", "action" => "profile", ) );

Slide 16

Slide 16 text

componentes para Armazenamento de dados

Slide 17

Slide 17 text

● ORM - Object Relational Mapping ○ MySQL, PostgreSQL and SQLite são suportados ● PHQL - Phalcon Query Language ○ escrever consultas usando uma linguagem SQL-like ○ implementado como um analisador (escrito em C), que se traduz em que a sintaxe de RDBMS alvo. ● Object Document Mapping for MongoDB ○ mapear documentos para um banco de dados MongoDB ● Transações ● Cache ○ Suporta muitos backends, como Redis, Memcached, MongoDB, Arquivos, Apc e mais

Slide 18

Slide 18 text

componentes de FrontEnd

Slide 19

Slide 19 text

● Template engines ○ fornecer dados para o navegador web ou outra ferramenta que é usada para fazer solicitações do seu aplicativo. ● i18n ● Construtor de Formulários ● Mensagens Rápidas $form = new Form(); $form->add(new Text("nome")); $form->add(new Text("telefone")); class PostsController extends Controller { public function saveAction() { $this->flash->error("too bad!"); $this->flash->success("yes!"); $this->flash->notice("important"); $this->flash->warning("best check."); } }

Slide 20

Slide 20 text

Volt - mecanismo de modelo inspirado em Jinja, mas construído em C para PHP {# 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 %}

Slide 21

Slide 21 text

componentes Avançados

Slide 22

Slide 22 text

● ACL ○ construir a lista de controle de acesso (ACL) ● Sharding ○ Adicionar modelos de banco de dados diferente ● Crypt ● Events ○ Um Gestor de Eventos nos permite anexar ouvintes para um determinado tipo de evento. use Phalcon\Acl; use Phalcon\Acl\Role; use Phalcon\Acl\Adapter\Memory as AclList; $acl = new AclList(); $acl->setDefaultAction(Acl::DENY); $roles = array( 'users' => new Role('Users'), 'guests' => new Role('Guests') ); foreach ($roles as $role) { $acl->addRole($role); }

Slide 23

Slide 23 text

$di->set('dispatcher', function () { // Create an events manager $eventsManager = new EventsManager(); // Listen for events produced in the dispatcher using the Security plugin $eventsManager->attach('dispatch:beforeExecuteRoute', new SecurityPlugin); // Handle exceptions and not-found exceptions using NotFoundPlugin $eventsManager->attach('dispatch:beforeException', new NotFoundPlugin); $dispatcher = new Dispatcher(); // Assign the events manager to the dispatcher $dispatcher->setEventsManager($eventsManager); return $dispatcher; });

Slide 24

Slide 24 text

Filas - processo em segundo plano use Phalcon\Queue\Beanstalk; $queue = new Beanstalk( array('host' => '192.168.0.21', 'port' => '11300') ); $queue->put( array('processVideo' => 4871) );

Slide 25

Slide 25 text

Ainda não acabou tem mais ..

Slide 26

Slide 26 text

Phalcon Developer Tools

Slide 27

Slide 27 text

São ferramentas são uma coleção de scripts úteis para gerar o código esqueleto. Componentes essenciais do seu aplicativo pode ser gerado com um simples comando, permitindo que você facilmente desenvolver aplicativos usando Phalcon. Available commands: commands (alias of: list, enumerate) controller (alias of: create-controller) module (alias of: create-module) model (alias of: create-model) all-models (alias of: create-all-models) project (alias of: create-project) scaffold (alias of: create-scaffold) migration (alias of: create-migration) webtools (alias of: create-webtools)

Slide 28

Slide 28 text

resumo da ópera

Slide 29

Slide 29 text

● Ele oferece as características clássicas de um framework PHP MVC moderno ( rotas, controladores, templates, ORM, cache, etc) ● Ser uma extensão, o Phalcon é somente uma extensão a mais no servidor. ● Github ○ 8,700 commits ○ 36 branches ○ 72 releases ○ 183 contributors ● Boa documentação e com 7 tutorial Prós

Slide 30

Slide 30 text

Contras ● Pode haver uma curva de aprendizado ● Sem suporte Oracle ● Caso algo dê errado, você poderá ter que debugar código em C - Versões antigas ● stackoverflow ○ phalcon php - 167 results

Slide 31

Slide 31 text

More ... ● http://code-squad.com/curso/Phalcon-Framework-PHP-Alta-Pe rformance-Curso-Online/assinar ● https://github.com/phalcon ○ https://github.com/phalcon/invo ● https://github.com/sergeyklay/awesome-phalcon ● https://docs.phalconphp.com/en/latest/index.html ● https://www.youtube.com/watch?v=q2DYd_fIoto ○ Phalcon PHP vs Node.js (Express.js)