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 !

Trabalhando de forma profissional com silex

  • 1.
  • 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 LaravelConference Brasil https: //laraconfbrasil.com.br Data do evento: Dia 8 de outubro
  • 7.
    INTRODUÇÃO. Para iniciar sobreo 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 COMOTUDO 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 DEVOUTILIZAR? ● 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 DEVOUTILIZAR ? ● 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 DEVOUTILIZAR ? ● 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ÉMEXISTE ! ● 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 ?
  • 17.
  • 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 DOSILEX ● 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 DOSILEX ● Só isso ? - Sim, para iniciar é exatamente simples como você pode reparar e sem a necessidade de muitos tutoriais e etc !
  • 29.
    INICIANDO COM OSILEX ● 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 ROTASNO 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 ROTASNO 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()
  • 32.
  • 33.
    SILEX E OTWIG ● 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 OTWIG Para inserir o componente execute o comando: composer require symfony/twig-bridge
  • 35.
    SILEX E OTWIG ● Apos a execução dos comandos você já pode utilizar sem nenhum problema ! ○ Perceba que seu arquivo composer.json é alterado veja:
  • 36.
    SILEX E OTWIG ● 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 OTWIG ● 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.
  • 43.
  • 44.
    ● Estou naTDC para bater um papo com quem estiver interessado ! O FUTURO DOS FRAMEWORKS !
  • 45.
    ● Obrigado atodos 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 !