SlideShare uma empresa Scribd logo
TRABALHANDO DE FORMA
PROFISSIONAL COM SILEX
QUEM SOU EU ?
Criador e mantenedor:
● https://www.facebook.com/groups/silexbrasil
● https://www.facebook.com/groups/laravelsp
● https://www.facebook.com/groups/phingbrasil
● https://www.facebook.com/groups/sonicpibrasil
● https://www.facebook.com/groups/doctrinebrasil
Instrutor:
● 4 Linux
● Webschool.io
QUEM SOU EU ?
https://github.com/michaeldouglas
https://twitter.com/mdba_araujo
https://facebook.com/mdba.araujo
QUEM SOU EU ?
Livro: Zend Certified Engineer - Descomplicando a
certificação PHP
QUEM SOU EU ?
Laravel PagSeguro https://github.
com/michaeldouglas/laravel-pagseguro
LARAVEL CONFERENCE BRASIL
Laravel Conference Brasil https:
//laraconfbrasil.com.br
Data do evento: Dia 8 de outubro
INTRODUÇÃO.
Para iniciar sobre o que é um Microframework usaremos como
exemplo o Bootstrap - (Framework HTML, CSS e JavaScript)
● Muitos componentes, nem todos serão usados.
● Por exemplo: Um pequeno formulário de contato será que
Preciso usar o Bootstrap ?
● Quando utilizar ? - E quando não ?
● Até mesmo nesse mundo HTML e CSS existem
Microframeworks: http://fox-css.com
FULL STACK COMO TUDO COMEÇOU ?
● Nos primórdios veio Ruby On Rails outras linguagens como
o PHP acham interessante o MVC !
● Nasce então os Frameworks MVC PHP: Zend Framework,
Symfony e etc. - Que cuidam dos seus problemas do inicio ao
fim.
● Será que a todo momento devo utilizar um Full Stack ?
● Vale a pena ler esse post feito pelo Elton Minetto referente a
esse assunto de Full Stack: http://goo.gl/ERBbEH
O QUE É UM MICROFRAMEWORK?
● " Microframework é um termo utilizado para se referir a um
framework de aplicação minimalistas - Wikipédia "
○ Ou seja, nem sempre eu preciso de um canhão para matar
uma mosca, por exemplo: Symfony e Zend Framework.
○ Então só devo utilizar Microframework para pequenas
aplicações? - Não, caso você tenha uma aplicação bem
organizada um Microframework pode ajudar!
○ Ou até mesmo para a criação de uma API, por que utilizar
um Full Stack se você tem os Microframeworks!
POR QUE DEVO UTILIZAR?
● Legal, mas se um Microframewok é um Framework
simplificado que resolve pequenos problemas será que tem
uma estrutura de códigos suficiente para tornar mais ágil o
meu desenvolvimento? - Sim, mas o que?
○ Primeiramente que um Microframework é mais simples
de utilizar.
○ Inserção de componentes conforme necessário, muitos
componentes do Full Stack provavelmente você nunca
tenha utilizado!
POR QUE DEVO UTILIZAR ?
● Com o passar do tempo os frameworks Full Stack foram
ficando cade vez maiores e isso não é ruim !
● Desvantagem deste crescimento é que eles se tornaram
complicados para desenvolvimento de projetos mais simples
ou até mesmo para entendimento de suas estruturas.
● Aprovação da PSR-7 - Que é a padronização dos
componentes de Request e Responses. A título de curiosidade
vale a pena você dar uma olhada na proposta do Zend
Framework 3 referente a seus componentes como o MVC.
POR QUE DEVO UTILIZAR ?
● O mais interessante da utilização dos Microframeworks é a
liberdade de componetes!
POR QUE SILEX ?
● Silex é baseado em um dos mais popalares Frameworks PHP
que é o Symfony. - Para muitos aqui uma verdadeira alegria,
pois é considerado um dos melhores Frameworks PHP ou até
mesmo o melhor!
● Silex é baseado nos componentes do Symfony como por
exemplo: HttpKernel (Coração do Symfony 2).
● Desenvolvido por Fabien Potencier o mesmo criador do
Symfony.
POR QUE SILEX ?
● Silex foi criado para aplicações pequenas com foco em
agilidade que seja extensível e fácil de testar !
● Utiliza o Pimple para controle de injeção de dependência
tornando ainda mais fácil a utilização de componentes
terceiros.
● A instalação é muito simples com apenas um arquivo
composer.json e index.php o Silex já pode ser utilizado !
POR QUE LUMEN ?
● Lumen também é um Microframework derivado do Laravel,
criado por Taylor Otwell.
○ Muitos utilizam Laravel e não conhecem Lumen.
○ Criado por Taylor quando estava fazendo micro serviços
para o projeto Envoyer. (Envoyer é um implementador
zero-down-time para projetos PHP & Laravel).
● Segundo o Benchmarking feito por Taylor o Lumen é mais
rápido.
SLIM ELE TAMBÉM EXISTE !
● Slim também é um microframework criado por: Josh
Lockhart, Andrew Smith e Rob Allen.
● Fácil de instalar e de utilzar.
● O futuro parece ser dos Microframeworks?
○ Quais opções temos além do Silex, Lumen e Slim ?
MAIS OPÇÕES QUAIS SÃO ?
SILEX x LUMEN
● Por que Silex x Lumen ?
Google Trend
interesse: Symfony,
Laravel e Zend
Framework.
Symfony e Laravel
mais populares e já
possuem seus
Microframeworks.
SILEX x LUMEN
● Popularidade GitHub: Laravel, Symfony e Zend Framework
SILEX x LUMEN
● Desvantagem Lumen:
○ Por ser baseado no Laravel existe um pouco de
dependência do Framework e conhecimento do mesmo,
se você não gosta do Laravel não vale a pena;
○ O tamanho de estrutura do Lumen assusta para quem
deseja algo o mais simples possível;
○ Muitos não concordam que o Lumen é tão rápido assim
como é vendido na documentação;
○ A seguir veremos o comparativo do Lumen, Silex e Slim.
SILEX x LUMEN
● Imagem do Benchmark de requisições que segundo o Taylor,
Lumen em comparação ao Silex e Slim é mais rápido:
● Vídeo do Benchmark feito por Taylor Otwell:
○ https://youtu.be/WqRpa_5m7h4
SILEX x LUMEN
● Vantagem Lumen:
○ A documentação é excelente se você seguir consegue
utilizar sem dor de cabeça;
○ Segundo Taylor Otwell Lumen é mais rápido que Silex e
Slim;
○ Por se basear no Laravel, o Lumen é tão agradável de
utilizar como seu irmão Laravel;
SILEX x LUMEN
● Vantagem Lumen:
○ Preparado para migrar para um projeto Laravel
Framework;
○ A sintaxe do Lumen é de fácil utilização e compreensão.
SILEX x LUMEN
● Desvantagem Silex:
○ Desvantagem? - Sinceramente eu ainda não encontrei!
SILEX x LUMEN
● Vantagem Silex:
○ Ele é um dos Microframeworks PHP mais rápido;
○ Silex é muito fácil de implementar e sair usando;
○ Ótima documentação;
○ Utiliza componentes do seu irmão Symfony, é modular,
ou seja, use somente o que você precisa;
○ Ótima escolha para criação de sistemas grandes de forma
profissional e sem muita dor de cabeça.
INSTALANDO O SILEX
● O que você precisa para iniciar é:
○ Criar a pasta do projeto.
○ Criar ou editar o arquivo composer.json
● Caso já tenha o composer, execute: composer install.
ESTRUTURA INICIAL DO SILEX
● Após a execução da instalação das dependências, a estrutura
ficará da seguinte maneira:
| -- PalestraSilex
| -- vendor
| -- composer.json
| -- composer.lock
Repare como é pouca
dependência baixada
para o Silex
funcionar!
ESTRUTURA INICIAL DO SILEX
● Só isso ? - Sim, para iniciar é exatamente simples como você
pode reparar e sem a necessidade de muitos tutoriais e etc !
INICIANDO COM O SILEX
● O primeiro arquivo necessário para começar sua vida com o
Silex. É, por exemplo: criar um arquivo index.php, criar a
instância de Application e chamar o método: run().
TRABALHANDO COM ROTAS NO SILEX
● Para realizar seu primeiro teste de rota em Silex.
○ Poderíamos então chamar um servidor PHP simples para
teste, desta maneira:
■ php -S localhost:8000.
○ Lembrando que você precisa estar na raiz do projeto.
TRABALHANDO COM ROTAS NO SILEX
● Para teste criaremos duas requisições que utilizam uma lista
de carros e modelos. Você verá o quanto é simples utilizar o
Silex para criar a rota e retornar os dados de marca e modelo.
● Para nosso exemplo será utilizado o método get.
● Além do get você pode utilizar: put, delete, post e patch .
○ $app->put()
○ $app->delete()
○ $app->patch()
○ $app->post()
TRABALHANDO COM ROTAS NO SILEX
SILEX E O TWIG
● O Twig é uma linguagem de template criada e mantida pela
SensioLabs. Twig já vem embarcado por padrão no Symfony
aqui no Silex você precisa adicionar o Twig.
○ Para inserir o Twig você precisa executar o comando:
composer require twig/twig
● Além de instalar o Twig é interessante você instalar o
componente: Synfony Twig-Bridge que serve para realizar
uma integração entre componentes do Symfony e do Twig.
SILEX E O TWIG
Para inserir o componente execute o comando: composer require
symfony/twig-bridge
SILEX E O TWIG
● Apos a execução dos comandos você já pode utilizar sem
nenhum problema !
○ Perceba que seu arquivo composer.json é alterado veja:
SILEX E O TWIG
● Para inciar com Twig
iremos criar a pasta
views. Registrar o
TwigServiceProvider,
passar para a view
(marcas.twig) os
dados de marcas. E
então exibir os dados
no padrão Json.
SILEX E O TWIG
● Estrutura de pasta views e o template marcas.twig que agora é
responsável por exibir o Json de dados !
○ A estrutura marcas.twig só recebe o seguinte código:
■ {{ marcas|json_encode() }}
SILEX E DOCTRINE
● Basicamente Doctrine é um Framework de Mapeamento
Objeto-Relacional e dispensa muitas apresentações pois
muitos já o conhecerem.
○ Em Silex nós o utilizaremos com DoctrineServiceProvider
que fornece uma integração entre Doctrine DBAL e Silex.
● Para utilizar em Silex você também precisa inserir o
componente doctrine dbal da seguinte maneira:
○ composer require "doctrine/dbal:~2.2"
SILEX E DOCTRINE
● Para utilizar um banco de dados
em Silex você registra o
componente e configura os
dados de conexão. E sem muita
dificuldade pode utilizar uma
consulta em seu banco de dados!
○ Para obter os dados foi
utilizado fetchAssoc.
○ A seguir mais opções:
SILEX E DOCTRINE
● Outras formas de interagir com o seu banco de dados são:
○ fetchAll - Primeiro parâmetro o SQL de consulta.
○ insert - Primeiro parâmetro é a tabela segundo os valores.
○ update - Primeiro parâmetro é a tabela segundo os
valores.
○ delete - Primeiro parâmetro é a tabela segundo os valores.
SILEX E MONOLOG
● Monolog é um componente que pode ser utilizado em Silex
para criação de logs do seu sistema.
○ É um bom componente para o Silex já que utiliza a
interface de logs recomendada na PSR-3.
● Em Silex para utilizar novamente você precisa registrar o
componente MonologServiceProvider instalar o monolog.
○ Execute então: composer require monolog/monolog.
○ Detalhe é que ao registrar o monolog você também deve
informar o local de armazenamento dos logs !
SILEX E MONOLOG
● Podemos utilizar três métodos para gravação de logs com
Monolog:
○ addInfo() - Esse tipo de log é utilizado para informações
de processo, ou seja, dados informativos de fluxo.
○ addWarning() - Esse tipo de log é utilizado para
informações de aviso de processo.
○ addError() - Esse tipo de log é utilizado para informações
de erro de processo.
SILEX E MONOLOG
● Estou na TDC para bater um papo com quem estiver
interessado !
O FUTURO DOS FRAMEWORKS !
● Obrigado a todos vocês e especialmente a equipe da TDC por
ceder o espaço.
● Todo o código utilizado nos exemplos estão no meu Github
no repositório: https://github.com/michaeldouglas/palestra-
silex
SILEX !

Mais conteúdo relacionado

PDF
Programando php com mais segurança
PDF
A mágica por trás dos aplicativos ( Api com o Laravel )
ODP
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
PPTX
APIs do Jeito Certo
PDF
Por que jenkins se posso usar deployer php
PDF
Cya grunt.js, hello gulp.js
PPTX
Laravel 5: Entenda o ambiente e a estrutura MVC
PPTX
Evitando a fadiga com Laravel Homestead
Programando php com mais segurança
A mágica por trás dos aplicativos ( Api com o Laravel )
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
APIs do Jeito Certo
Por que jenkins se posso usar deployer php
Cya grunt.js, hello gulp.js
Laravel 5: Entenda o ambiente e a estrutura MVC
Evitando a fadiga com Laravel Homestead

Mais procurados (20)

PPTX
Javascript por debaixo dos panos
PDF
Javascript por debaixo dos panos
PDF
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
PPTX
Laravel 5
ODP
Django - Muito além do básico
PDF
Como fazer boas libs
PPTX
Testes com javascript
PDF
Uma breve introdução ao Terraform
PDF
Async/Await Pattern in C#
KEY
Django - Desenvolvimento web ágil com Python
PDF
JEE nas nuvens: uma introdução ao openshift
PPTX
PPTX
Desenvolvendo para WordPress com Docker, Git e WP-CLI
PDF
Google App Engine e PHP
PDF
Desenvolvimento web ágil com python e web2py
PDF
Traduções no WordPress
PDF
Node js - Javascript Server Side
PPTX
Workshop react + adonis.js
PDF
Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
PDF
Django para desenvolvimento web; porque ser repetitivo é chato.
Javascript por debaixo dos panos
Javascript por debaixo dos panos
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Laravel 5
Django - Muito além do básico
Como fazer boas libs
Testes com javascript
Uma breve introdução ao Terraform
Async/Await Pattern in C#
Django - Desenvolvimento web ágil com Python
JEE nas nuvens: uma introdução ao openshift
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Google App Engine e PHP
Desenvolvimento web ágil com python e web2py
Traduções no WordPress
Node js - Javascript Server Side
Workshop react + adonis.js
Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Django para desenvolvimento web; porque ser repetitivo é chato.
Anúncio

Destaque (16)

PDF
Aplicando SOLID com PHP7
PPTX
Hackeando sua aplicaçao php na pratica
PDF
Comunicação em tempo real com WebRTC e PHP
ODP
PHP Symfony, Vale A Pena
PPT
Php FrameWARks - sem CakePHP
PDF
Sua aplicação não é filha de um framework
PDF
WebRTC - Comunicação na web em tempo real
PPTX
Sessao Exploratoria WebRTC
PPT
Agilidade Com Scrum
PDF
Orquestrando Aplicações PHP com Symfony
PDF
Palestra - Symfony Framework MVC PHP 5
PDF
Api usando Silex
PDF
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
PPT
Desenvolvimento Agil Com Doctrine Orm
PDF
Nodejs e Socket.io
PDF
A Practical Guide to WebRTC
Aplicando SOLID com PHP7
Hackeando sua aplicaçao php na pratica
Comunicação em tempo real com WebRTC e PHP
PHP Symfony, Vale A Pena
Php FrameWARks - sem CakePHP
Sua aplicação não é filha de um framework
WebRTC - Comunicação na web em tempo real
Sessao Exploratoria WebRTC
Agilidade Com Scrum
Orquestrando Aplicações PHP com Symfony
Palestra - Symfony Framework MVC PHP 5
Api usando Silex
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Desenvolvimento Agil Com Doctrine Orm
Nodejs e Socket.io
A Practical Guide to WebRTC
Anúncio

Semelhante a Trabalhando de forma profissional com silex (20)

PDF
D de SOLID: Reduzindo o vendor lock-in em aplicações PHP
PPTX
Silverlight 4 e Expression Blend 4
PPTX
Solucionando a Teoria do Caos com Cypress.io
PPTX
#Moving br workshop
PDF
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
PPTX
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
PPTX
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
PDF
Slide Aula - Curso CakePHP
PDF
além do mvp com php
PDF
Além do MVP com PHP - TDC POA 2015
PPTX
Começando errado com php
PDF
Introdução à Programação Web com Angular
PDF
PHP 5 de Forma Correta e Segura
PDF
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
PPTX
Criando Aplicações .NET com o TheWebMind
PPTX
Desenvolvimento web - conceitos, tecnologia e tendências.
PDF
Curso - Introdução - Aprendendo o Básico de Laravel
PDF
Tudo que você precisa saber sobre as principais alterações no Drupal 8
PDF
Meetup-Churrops
PPTX
DotNetDay novidades entityframework 4
D de SOLID: Reduzindo o vendor lock-in em aplicações PHP
Silverlight 4 e Expression Blend 4
Solucionando a Teoria do Caos com Cypress.io
#Moving br workshop
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Slide Aula - Curso CakePHP
além do mvp com php
Além do MVP com PHP - TDC POA 2015
Começando errado com php
Introdução à Programação Web com Angular
PHP 5 de Forma Correta e Segura
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Criando Aplicações .NET com o TheWebMind
Desenvolvimento web - conceitos, tecnologia e tendências.
Curso - Introdução - Aprendendo o Básico de Laravel
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Meetup-Churrops
DotNetDay novidades entityframework 4

Último (11)

PPTX
Eng. Software - pontos essenciais para o início
PPTX
Utilizando code blockes por andre backes
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Eng. Software - pontos essenciais para o início
Utilizando code blockes por andre backes
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Arquitetura de computadores - Memórias Secundárias
Viasol Energia Solar -Soluções para geração e economia de energia
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Mecânico de Manutenção de Equipamentos.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Manejo integrado de pragas na cultura do algodão
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx

Trabalhando de forma profissional com silex

  • 2. QUEM SOU EU ? Criador e mantenedor: ● https://www.facebook.com/groups/silexbrasil ● https://www.facebook.com/groups/laravelsp ● https://www.facebook.com/groups/phingbrasil ● https://www.facebook.com/groups/sonicpibrasil ● https://www.facebook.com/groups/doctrinebrasil Instrutor: ● 4 Linux ● Webschool.io
  • 3. QUEM SOU EU ? https://github.com/michaeldouglas https://twitter.com/mdba_araujo https://facebook.com/mdba.araujo
  • 4. QUEM SOU EU ? Livro: Zend Certified Engineer - Descomplicando a certificação PHP
  • 5. QUEM SOU EU ? Laravel PagSeguro https://github. com/michaeldouglas/laravel-pagseguro
  • 6. LARAVEL CONFERENCE BRASIL Laravel Conference Brasil https: //laraconfbrasil.com.br Data do evento: Dia 8 de outubro
  • 7. INTRODUÇÃO. Para iniciar sobre o que é um Microframework usaremos como exemplo o Bootstrap - (Framework HTML, CSS e JavaScript) ● Muitos componentes, nem todos serão usados. ● Por exemplo: Um pequeno formulário de contato será que Preciso usar o Bootstrap ? ● Quando utilizar ? - E quando não ? ● Até mesmo nesse mundo HTML e CSS existem Microframeworks: http://fox-css.com
  • 8. FULL STACK COMO TUDO COMEÇOU ? ● Nos primórdios veio Ruby On Rails outras linguagens como o PHP acham interessante o MVC ! ● Nasce então os Frameworks MVC PHP: Zend Framework, Symfony e etc. - Que cuidam dos seus problemas do inicio ao fim. ● Será que a todo momento devo utilizar um Full Stack ? ● Vale a pena ler esse post feito pelo Elton Minetto referente a esse assunto de Full Stack: http://goo.gl/ERBbEH
  • 9. O QUE É UM MICROFRAMEWORK? ● " Microframework é um termo utilizado para se referir a um framework de aplicação minimalistas - Wikipédia " ○ Ou seja, nem sempre eu preciso de um canhão para matar uma mosca, por exemplo: Symfony e Zend Framework. ○ Então só devo utilizar Microframework para pequenas aplicações? - Não, caso você tenha uma aplicação bem organizada um Microframework pode ajudar! ○ Ou até mesmo para a criação de uma API, por que utilizar um Full Stack se você tem os Microframeworks!
  • 10. POR QUE DEVO UTILIZAR? ● Legal, mas se um Microframewok é um Framework simplificado que resolve pequenos problemas será que tem uma estrutura de códigos suficiente para tornar mais ágil o meu desenvolvimento? - Sim, mas o que? ○ Primeiramente que um Microframework é mais simples de utilizar. ○ Inserção de componentes conforme necessário, muitos componentes do Full Stack provavelmente você nunca tenha utilizado!
  • 11. POR QUE DEVO UTILIZAR ? ● Com o passar do tempo os frameworks Full Stack foram ficando cade vez maiores e isso não é ruim ! ● Desvantagem deste crescimento é que eles se tornaram complicados para desenvolvimento de projetos mais simples ou até mesmo para entendimento de suas estruturas. ● Aprovação da PSR-7 - Que é a padronização dos componentes de Request e Responses. A título de curiosidade vale a pena você dar uma olhada na proposta do Zend Framework 3 referente a seus componentes como o MVC.
  • 12. POR QUE DEVO UTILIZAR ? ● O mais interessante da utilização dos Microframeworks é a liberdade de componetes!
  • 13. POR QUE SILEX ? ● Silex é baseado em um dos mais popalares Frameworks PHP que é o Symfony. - Para muitos aqui uma verdadeira alegria, pois é considerado um dos melhores Frameworks PHP ou até mesmo o melhor! ● Silex é baseado nos componentes do Symfony como por exemplo: HttpKernel (Coração do Symfony 2). ● Desenvolvido por Fabien Potencier o mesmo criador do Symfony.
  • 14. POR QUE SILEX ? ● Silex foi criado para aplicações pequenas com foco em agilidade que seja extensível e fácil de testar ! ● Utiliza o Pimple para controle de injeção de dependência tornando ainda mais fácil a utilização de componentes terceiros. ● A instalação é muito simples com apenas um arquivo composer.json e index.php o Silex já pode ser utilizado !
  • 15. POR QUE LUMEN ? ● Lumen também é um Microframework derivado do Laravel, criado por Taylor Otwell. ○ Muitos utilizam Laravel e não conhecem Lumen. ○ Criado por Taylor quando estava fazendo micro serviços para o projeto Envoyer. (Envoyer é um implementador zero-down-time para projetos PHP & Laravel). ● Segundo o Benchmarking feito por Taylor o Lumen é mais rápido.
  • 16. SLIM ELE TAMBÉM EXISTE ! ● Slim também é um microframework criado por: Josh Lockhart, Andrew Smith e Rob Allen. ● Fácil de instalar e de utilzar. ● O futuro parece ser dos Microframeworks? ○ Quais opções temos além do Silex, Lumen e Slim ?
  • 18. SILEX x LUMEN ● Por que Silex x Lumen ? Google Trend interesse: Symfony, Laravel e Zend Framework. Symfony e Laravel mais populares e já possuem seus Microframeworks.
  • 19. SILEX x LUMEN ● Popularidade GitHub: Laravel, Symfony e Zend Framework
  • 20. SILEX x LUMEN ● Desvantagem Lumen: ○ Por ser baseado no Laravel existe um pouco de dependência do Framework e conhecimento do mesmo, se você não gosta do Laravel não vale a pena; ○ O tamanho de estrutura do Lumen assusta para quem deseja algo o mais simples possível; ○ Muitos não concordam que o Lumen é tão rápido assim como é vendido na documentação; ○ A seguir veremos o comparativo do Lumen, Silex e Slim.
  • 21. SILEX x LUMEN ● Imagem do Benchmark de requisições que segundo o Taylor, Lumen em comparação ao Silex e Slim é mais rápido: ● Vídeo do Benchmark feito por Taylor Otwell: ○ https://youtu.be/WqRpa_5m7h4
  • 22. SILEX x LUMEN ● Vantagem Lumen: ○ A documentação é excelente se você seguir consegue utilizar sem dor de cabeça; ○ Segundo Taylor Otwell Lumen é mais rápido que Silex e Slim; ○ Por se basear no Laravel, o Lumen é tão agradável de utilizar como seu irmão Laravel;
  • 23. SILEX x LUMEN ● Vantagem Lumen: ○ Preparado para migrar para um projeto Laravel Framework; ○ A sintaxe do Lumen é de fácil utilização e compreensão.
  • 24. SILEX x LUMEN ● Desvantagem Silex: ○ Desvantagem? - Sinceramente eu ainda não encontrei!
  • 25. SILEX x LUMEN ● Vantagem Silex: ○ Ele é um dos Microframeworks PHP mais rápido; ○ Silex é muito fácil de implementar e sair usando; ○ Ótima documentação; ○ Utiliza componentes do seu irmão Symfony, é modular, ou seja, use somente o que você precisa; ○ Ótima escolha para criação de sistemas grandes de forma profissional e sem muita dor de cabeça.
  • 26. INSTALANDO O SILEX ● O que você precisa para iniciar é: ○ Criar a pasta do projeto. ○ Criar ou editar o arquivo composer.json ● Caso já tenha o composer, execute: composer install.
  • 27. ESTRUTURA INICIAL DO SILEX ● Após a execução da instalação das dependências, a estrutura ficará da seguinte maneira: | -- PalestraSilex | -- vendor | -- composer.json | -- composer.lock Repare como é pouca dependência baixada para o Silex funcionar!
  • 28. ESTRUTURA INICIAL DO SILEX ● Só isso ? - Sim, para iniciar é exatamente simples como você pode reparar e sem a necessidade de muitos tutoriais e etc !
  • 29. INICIANDO COM O SILEX ● O primeiro arquivo necessário para começar sua vida com o Silex. É, por exemplo: criar um arquivo index.php, criar a instância de Application e chamar o método: run().
  • 30. TRABALHANDO COM ROTAS NO SILEX ● Para realizar seu primeiro teste de rota em Silex. ○ Poderíamos então chamar um servidor PHP simples para teste, desta maneira: ■ php -S localhost:8000. ○ Lembrando que você precisa estar na raiz do projeto.
  • 31. TRABALHANDO COM ROTAS NO SILEX ● Para teste criaremos duas requisições que utilizam uma lista de carros e modelos. Você verá o quanto é simples utilizar o Silex para criar a rota e retornar os dados de marca e modelo. ● Para nosso exemplo será utilizado o método get. ● Além do get você pode utilizar: put, delete, post e patch . ○ $app->put() ○ $app->delete() ○ $app->patch() ○ $app->post()
  • 33. SILEX E O TWIG ● O Twig é uma linguagem de template criada e mantida pela SensioLabs. Twig já vem embarcado por padrão no Symfony aqui no Silex você precisa adicionar o Twig. ○ Para inserir o Twig você precisa executar o comando: composer require twig/twig ● Além de instalar o Twig é interessante você instalar o componente: Synfony Twig-Bridge que serve para realizar uma integração entre componentes do Symfony e do Twig.
  • 34. SILEX E O TWIG Para inserir o componente execute o comando: composer require symfony/twig-bridge
  • 35. SILEX E O TWIG ● Apos a execução dos comandos você já pode utilizar sem nenhum problema ! ○ Perceba que seu arquivo composer.json é alterado veja:
  • 36. SILEX E O TWIG ● Para inciar com Twig iremos criar a pasta views. Registrar o TwigServiceProvider, passar para a view (marcas.twig) os dados de marcas. E então exibir os dados no padrão Json.
  • 37. SILEX E O TWIG ● Estrutura de pasta views e o template marcas.twig que agora é responsável por exibir o Json de dados ! ○ A estrutura marcas.twig só recebe o seguinte código: ■ {{ marcas|json_encode() }}
  • 38. SILEX E DOCTRINE ● Basicamente Doctrine é um Framework de Mapeamento Objeto-Relacional e dispensa muitas apresentações pois muitos já o conhecerem. ○ Em Silex nós o utilizaremos com DoctrineServiceProvider que fornece uma integração entre Doctrine DBAL e Silex. ● Para utilizar em Silex você também precisa inserir o componente doctrine dbal da seguinte maneira: ○ composer require "doctrine/dbal:~2.2"
  • 39. SILEX E DOCTRINE ● Para utilizar um banco de dados em Silex você registra o componente e configura os dados de conexão. E sem muita dificuldade pode utilizar uma consulta em seu banco de dados! ○ Para obter os dados foi utilizado fetchAssoc. ○ A seguir mais opções:
  • 40. SILEX E DOCTRINE ● Outras formas de interagir com o seu banco de dados são: ○ fetchAll - Primeiro parâmetro o SQL de consulta. ○ insert - Primeiro parâmetro é a tabela segundo os valores. ○ update - Primeiro parâmetro é a tabela segundo os valores. ○ delete - Primeiro parâmetro é a tabela segundo os valores.
  • 41. SILEX E MONOLOG ● Monolog é um componente que pode ser utilizado em Silex para criação de logs do seu sistema. ○ É um bom componente para o Silex já que utiliza a interface de logs recomendada na PSR-3. ● Em Silex para utilizar novamente você precisa registrar o componente MonologServiceProvider instalar o monolog. ○ Execute então: composer require monolog/monolog. ○ Detalhe é que ao registrar o monolog você também deve informar o local de armazenamento dos logs !
  • 42. SILEX E MONOLOG ● Podemos utilizar três métodos para gravação de logs com Monolog: ○ addInfo() - Esse tipo de log é utilizado para informações de processo, ou seja, dados informativos de fluxo. ○ addWarning() - Esse tipo de log é utilizado para informações de aviso de processo. ○ addError() - Esse tipo de log é utilizado para informações de erro de processo.
  • 44. ● Estou na TDC para bater um papo com quem estiver interessado ! O FUTURO DOS FRAMEWORKS !
  • 45. ● Obrigado a todos vocês e especialmente a equipe da TDC por ceder o espaço. ● Todo o código utilizado nos exemplos estão no meu Github no repositório: https://github.com/michaeldouglas/palestra- silex SILEX !