SlideShare a Scribd company logo
1 of 45
Download to read offline
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 !

More Related Content

What's hot

Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIDesenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvendo para WordPress com Docker, Git e WP-CLIRudá Almeida
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Traduções no WordPress
Traduções no WordPressTraduções no WordPress
Traduções no WordPressBreno Alves
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutençãoGerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutençãospirallab
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
 

What's hot (20)

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

Viewers also liked

Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica Cyrille Grandval
 
Comunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPComunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPMichael Douglas
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaMarcelo Fleury
 
Sua aplicação não é filha de um framework
Sua aplicação não é filha de um frameworkSua aplicação não é filha de um framework
Sua aplicação não é filha de um frameworkDaniel Lima
 
WebRTC - Comunicação na web em tempo real
WebRTC - Comunicação na web em tempo realWebRTC - Comunicação na web em tempo real
WebRTC - Comunicação na web em tempo realRicardo Torres
 
Sessao Exploratoria WebRTC
Sessao Exploratoria WebRTCSessao Exploratoria WebRTC
Sessao Exploratoria WebRTCRui Ribeiro
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyFlávio Lisboa
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2Flávio Lisboa
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
A Practical Guide to WebRTC
A Practical Guide to WebRTCA Practical Guide to WebRTC
A Practical Guide to WebRTCvline
 

Viewers also liked (16)

Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica Hackeando sua aplicaçao php na pratica
Hackeando sua aplicaçao php na pratica
 
Comunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHPComunicação em tempo real com WebRTC e PHP
Comunicação em tempo real com WebRTC e PHP
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A Pena
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
Sua aplicação não é filha de um framework
Sua aplicação não é filha de um frameworkSua aplicação não é filha de um framework
Sua aplicação não é filha de um framework
 
WebRTC - Comunicação na web em tempo real
WebRTC - Comunicação na web em tempo realWebRTC - Comunicação na web em tempo real
WebRTC - Comunicação na web em tempo real
 
Sessao Exploratoria WebRTC
Sessao Exploratoria WebRTCSessao Exploratoria WebRTC
Sessao Exploratoria WebRTC
 
Agilidade Com Scrum
Agilidade Com ScrumAgilidade Com Scrum
Agilidade Com Scrum
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com Symfony
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Api usando Silex
Api usando SilexApi usando Silex
Api usando Silex
 
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2Gerenciamento de serviços e eventos em PHP com Zend Framework 2
Gerenciamento de serviços e eventos em PHP com Zend Framework 2
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Nodejs e Socket.io
Nodejs e Socket.ioNodejs e Socket.io
Nodejs e Socket.io
 
A Practical Guide to WebRTC
A Practical Guide to WebRTCA Practical Guide to WebRTC
A Practical Guide to WebRTC
 

Similar to Trabalhando de forma profissional com silex

Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Rodrigo Kono
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioPatrick Monteiro
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Além do MVP com PHP - TDC POA 2015
Além do MVP com PHP  - TDC POA 2015Além do MVP com PHP  - TDC POA 2015
Além do MVP com PHP - TDC POA 2015Romeu Mattos
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindJaydson Gomes
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4Marcelo Paiva
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code StandardToni Albuquerque
 

Similar to Trabalhando de forma profissional com silex (20)

Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Além do MVP com PHP - TDC POA 2015
Além do MVP com PHP  - TDC POA 2015Além do MVP com PHP  - TDC POA 2015
Além do MVP com PHP - TDC POA 2015
 
além do mvp com php
além do mvp com phpalém do mvp com php
além do mvp com php
 
Começando errado com php
Começando errado com phpComeçando errado com php
Começando errado com php
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4DotNetDay novidades entityframework 4
DotNetDay novidades entityframework 4
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code Standard
 
Tecnologias ria2
Tecnologias ria2Tecnologias ria2
Tecnologias ria2
 

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 !