Acostumado a sempre ouvir falar de: Zend FrameWork, Laravel, symfony e entre outros ? - Porém existem outras ferramentas que não precisam ser verdadeiros canhões e que seja possível organizar, trabalhar com reutilização de código e etc. Que tal utilizar então um : micro-framework para ajudar nessas rotinas mais comuns e imagine que esse micro-framework seja baseado no symfony ? Essa maravilha é o Silex que para quem está começando a se organizar e deseja entrar no mundo PHP profissional tais como, testes, API's, MVC, módulos próprios, services e entre outros irá ajudar a trilhar esse caminho sem muita dor de cabeça. A palestra visa mostrar os seguintes assuntos:
* O que é um micro-framework
* Por que devo utilizar ?
* Silex X Lumen !
* Instalando o Silex
* Serviços
* Rotas
* Twig - Utilização básica
* Doctrine - Utilização básica
* Monolog
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
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 !