Share
Embed
Phalcon PHP Framework
Conheça o framework PHP de auto desempenho com Júnio Santos (https://www.linkedin.com/in/junio-santos-7b643955).
PHP DF
October 19, 2016
Transcript
31 slides
-
Phalcon PHP framework Its innovative architecture makes Phalcon the fastest
PHP framework ever built! -
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 -
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 -
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; -
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/ -
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"); -
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(); -
Auto-loader use Phalcon\Loader; $loader = new Loader(); $loader->registerNamespaces( array( "Example\Base"
=> "vendor/example/base/", "Example\Adapter" => "vendor/example/adapter/", ) ); $loader->register(); -
Router $router = new \Phalcon\Mvc\Router(); $router->add( "/admin/users/my-profile", array( "controller" =>
"users", "action" => "profile", ) ); -
• 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 -
• 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."); } } -
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 %} -
• 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); } -
$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; }); -
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) ); -
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) -
• 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 -
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 -
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)