Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Phalcon PHP Framework

PHP DF
October 19, 2016

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
Tweet

More Decks by PHP DF

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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;
  4. 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/
  5. 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");
  6. 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();
  7. Auto-loader use Phalcon\Loader; $loader = new Loader(); $loader->registerNamespaces( array( "Example\Base"

    => "vendor/example/base/", "Example\Adapter" => "vendor/example/adapter/", ) ); $loader->register();
  8. • 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
  9. • 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."); } }
  10. 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 %}
  11. • 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); }
  12. $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; });
  13. 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) );
  14. 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)
  15. • 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
  16. 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
  17. 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)