trabalhando de forma profissional com silex
Post on 18-Jan-2017
1.077 Views
Preview:
TRANSCRIPT
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 TWIGPara 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 !
top related