SlideShare uma empresa Scribd logo
1 de 31
Symfony Flex & Dependency Injection
Symfony Live São Paulo 2019
Gabriel Machado
Autor nas trilhas de Cloud
Symfony Live São Paulo 2019
gmsantos
gmsantos__
gmsantos
gmsantos
Evolução dos Frameworks
2001–2009
Primeiros Frameworks
• PHP 4
• Wordpress
• Symfony 1, Zend Framework 1, CodeIgniter
2009-2013
Modularização Frameworks
• PHP 5 (Namespaces, spl_autoloader)
• PHP-FIG PSR-0 (Autoload)
• Composer
• Synfony 2, Zend Framework 2, Laravel 4
2013-2017
Foco em Componentes e Micro frameworks
• The PHP League
• PSR (Log, Container, Cache, HTTP)
• Slim, Silex (RIP)
Comparação
Symfony Live São Paulo 2019
Micro framework
Leve
Altamente customizável
“Rápido”
Ideal para microservices
Full Stack Framework
Completo (funcionalidades)
Integrado
Padronizado
Fácil de “deployar”
E se você
pudesse ter
ambos?
O que é o Symfony Flex
Nova forma de gerenciar uma aplicação Symfony
Construído como um plugin do Composer
Foco na automação de tarefas e gerenciamento de dependências
Automatiza a configuração de pacotes e criação da estrutura da aplicação
Permite começar como um microframework e incluir novos components sob demanda
Como iniciar um projeto com Flex
Symfony Live São Paulo 2019
Para criar uma aplicação web completa
$ composer create-project symfony/website-skeleton app
Para criar um micro serviço, API ou aplicação CLI (console)
$ composer create-project symfony/skeleton app
symfony/skeleton
Symfony Live São Paulo 2019
symfony/skeleton
Symfony Live São Paulo 2019
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"symfony/console": "*",
"symfony/dotenv": "*",
"symfony/flex": "^1.1",
"symfony/framework-bundle": "*",
"symfony/yaml": "*"
},
Estrutura de diretórios
Symfony Live São Paulo 2019
Demo
Criação de um novo projeto
Symfony Live São Paulo 2019
Symfony Flex
Symfony Live São Paulo 2019
Prefetch e Downloads
em paralelo de
dependências
Resolução de
dependências
(extra.symfony.require)
Recipes para instalação,
atualização e remoção
de dependências
Suporte a Alias
Packs de dependências
Comandos extras para
o Composer
Prefetch e Downloads em paralelo de dependências
Symfony Live São Paulo 2019
extra.symfony.require
Symfony Live São Paulo 2019
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.3.*"
}
}
{
"bundles": {
"SymfonyBundleFrameworkBundleFrameworkBundle": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/", "src/": "%SRC_DIR%/"
},
"composer-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"env": {
"APP_ENV": "dev",
"#TRUSTED_HOSTS": "'^localhost|example.com$’”
},
"gitignore": [
"/.env.local",
"/vendor/"
]
}
Recipes
Symfony Live São Paulo 2019
Recipes
Symfony Live São Paulo 2019
• bundles
• copy-from-recipe
• copy-from-package
• env
• container
• makefile
• composer-scripts
• gitignore
• dockerfile ✨ https://github.com/symfony/flex/pull/128
• docker-compose ✨
Suporte a Alias
Symfony Live São Paulo 2019
Alguns comandos que rodamos durante a demo:
$ composer require log annotation
$ composer require profiler server --dev
log, annotation, profiler, server não são pacotes válidos no packagist
(vendor/package)
Alias estão disponíveis somente para pacotes oficiais do Symfony.
Packs
Um grupo de
dependências que são
agrupadas e instaladas de
uma só vez
Exemplos: profiler, debug,
orm, serializer, encore
Symfony Live São Paulo 2019
Comandos extras para o Composer
Symfony Live São Paulo 2019
$ composer symfony:sync-recipes
$ composer symfony:generate-id
$ composer symfony:dump-env
$ composer symfony:unpack
flex.symfony.com
Symfony Live São Paulo 2019
Contribuindo com as Recipes
Symfony Live São Paulo 2019
Recipes oficiais
https://github.com/symfony/recipes/
Recipes comunidade
https://github.com/symfony/recipes-contrib/
Dependency Injection
Symfony Live São Paulo 2019
parameters:
services:
_defaults:
autowire: true
autoconfigure: true
App:
resource: '../src/*’
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}’
AppController:
resource: '../src/Controller’
tags: ['controller.service_arguments']
autowire
Symfony Live São Paulo 2019
Maior preferencia pelo tipo da classe (FQN) do que service id
Injeção de dependências diretamente no construtor da classe a partir
do type-hint
<?php
namespace AppService;
use AppUtilRot13Transformer;
class TwitterClient
{
private $transformer;
public function __construct(Rot13Transformer $transformer)
{
$this->transformer = $transformer;
}
}
autowire
Symfony Live São Paulo 2019
autoconfigure
Symfony Live São Paulo 2019
Registra automaticamente suas classes como commands, event
subscribers
Somente implemente ou estenda uma classe específica e sua classe
receberá a tag necessária
<?php
use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentHttpKernelKernelEvents;
class SetHeaderSusbcriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
KernelEvents::RESPONSE => 'onKernelResponse’
];
}
}
autoconfigure
Symfony Live São Paulo 2019
Tag controller.service_argument
Symfony Live São Paulo 2019
Controllers agora são tratados como serviços
É opcional estender AbstractController
Aceitam injeção de dependências a partir do construtor via autowire
Com a tag controller.service_argument, os Controllers aceitam injeção
de dependências em qualquer método
<?php
use PsrLogLoggerInterface;
class InvoiceController
{
public function listInvoices(LoggerInterface $logger)
{
$logger->info('A new way to access services!’);
}
}
Tag controller.service_argument
Symfony Live São Paulo 2019
Referências
Symfony Live São Paulo 2019
https://symfony.com/doc/current/setup/flex.html
https://symfony.com/blog/the-end-of-silex
https://github.com/symfony/skeleton
https://github.com/symfony/website-skeleton
https://symfony.com/doc/current/logging.html
https://symfony.com/doc/current/profiler.html
https://symfony.com/doc/current/service_container.html
https://symfony.com/doc/master/service_container/3.3-di-changes.html
https://www.sitepoint.com/symfony-flex-paving-path-faster-better-symfony/
Avalie essa palestra
https://joind.in/talk/1e84c
Symfony Live São Paulo 2019
Symfony Brasil
SymfonyBrasil
Obrigado!
Symfony Live São Paulo 2019
gmsantos
gmsantos__
gmsantos
gmsantos

Mais conteúdo relacionado

Semelhante a Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019

Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Gabriel Machado
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaMarcelo Fleury
 
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
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017Vitor Mattos
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
 
Symfony - PHP pra gente grande
Symfony - PHP pra gente grandeSymfony - PHP pra gente grande
Symfony - PHP pra gente grandeLuã de Souza
 
CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2Cauan Cabral
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
Symfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeSymfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeGabriel Machado
 
Desenvolvendo aplicações RIA - Marcel Araujo
Desenvolvendo aplicações RIA - Marcel AraujoDesenvolvendo aplicações RIA - Marcel Araujo
Desenvolvendo aplicações RIA - Marcel AraujoTchelinux
 
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Marco Gomes
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonRogerio Prado de Jesus
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 

Semelhante a Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019 (20)

Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A Pena
 
Ecossistema symfony
Ecossistema symfonyEcossistema symfony
Ecossistema symfony
 
Symfony2 Básico
Symfony2 BásicoSymfony2 Básico
Symfony2 Básico
 
Symfony, por quê usar?
Symfony, por quê usar?Symfony, por quê usar?
Symfony, por quê usar?
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com Symfony
 
Composer dependency manager - TDC - POA 2017
Composer   dependency manager - TDC - POA 2017Composer   dependency manager - TDC - POA 2017
Composer dependency manager - TDC - POA 2017
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Symfony - PHP pra gente grande
Symfony - PHP pra gente grandeSymfony - PHP pra gente grande
Symfony - PHP pra gente grande
 
Treinamento em Symfony2
Treinamento em Symfony2Treinamento em Symfony2
Treinamento em Symfony2
 
CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Symfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeSymfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPVale
 
WP Composer
WP ComposerWP Composer
WP Composer
 
Desenvolvendo aplicações RIA - Marcel Araujo
Desenvolvendo aplicações RIA - Marcel AraujoDesenvolvendo aplicações RIA - Marcel Araujo
Desenvolvendo aplicações RIA - Marcel Araujo
 
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - Season
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 

Mais de Gabriel Machado

Implementando PSR-3 com Monolog
Implementando PSR-3 com MonologImplementando PSR-3 com Monolog
Implementando PSR-3 com MonologGabriel Machado
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019Gabriel Machado
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeGabriel Machado
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
 
Pipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudPipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudGabriel Machado
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
 
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018Gabriel Machado
 
Logs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelLogs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelGabriel Machado
 
Relatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLRelatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLGabriel Machado
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Gabriel Machado
 
Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Gabriel Machado
 
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPNovidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPGabriel Machado
 

Mais de Gabriel Machado (12)

Implementando PSR-3 com Monolog
Implementando PSR-3 com MonologImplementando PSR-3 com Monolog
Implementando PSR-3 com Monolog
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP Vale
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
 
Pipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudPipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober Cloud
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018
Continuous Delivery com Docker, OpenShift e Jenkins @ TDC FLP 2018
 
Logs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelLogs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters Laravel
 
Relatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLRelatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQL
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017
 
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPNovidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
 

Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019

  • 1. Symfony Flex & Dependency Injection Symfony Live São Paulo 2019
  • 2. Gabriel Machado Autor nas trilhas de Cloud Symfony Live São Paulo 2019 gmsantos gmsantos__ gmsantos gmsantos
  • 3. Evolução dos Frameworks 2001–2009 Primeiros Frameworks • PHP 4 • Wordpress • Symfony 1, Zend Framework 1, CodeIgniter 2009-2013 Modularização Frameworks • PHP 5 (Namespaces, spl_autoloader) • PHP-FIG PSR-0 (Autoload) • Composer • Synfony 2, Zend Framework 2, Laravel 4 2013-2017 Foco em Componentes e Micro frameworks • The PHP League • PSR (Log, Container, Cache, HTTP) • Slim, Silex (RIP)
  • 4. Comparação Symfony Live São Paulo 2019 Micro framework Leve Altamente customizável “Rápido” Ideal para microservices Full Stack Framework Completo (funcionalidades) Integrado Padronizado Fácil de “deployar”
  • 5. E se você pudesse ter ambos?
  • 6. O que é o Symfony Flex Nova forma de gerenciar uma aplicação Symfony Construído como um plugin do Composer Foco na automação de tarefas e gerenciamento de dependências Automatiza a configuração de pacotes e criação da estrutura da aplicação Permite começar como um microframework e incluir novos components sob demanda
  • 7. Como iniciar um projeto com Flex Symfony Live São Paulo 2019 Para criar uma aplicação web completa $ composer create-project symfony/website-skeleton app Para criar um micro serviço, API ou aplicação CLI (console) $ composer create-project symfony/skeleton app
  • 9. symfony/skeleton Symfony Live São Paulo 2019 "require": { "php": "^7.1.3", "ext-ctype": "*", "ext-iconv": "*", "symfony/console": "*", "symfony/dotenv": "*", "symfony/flex": "^1.1", "symfony/framework-bundle": "*", "symfony/yaml": "*" },
  • 10. Estrutura de diretórios Symfony Live São Paulo 2019
  • 11. Demo Criação de um novo projeto Symfony Live São Paulo 2019
  • 12. Symfony Flex Symfony Live São Paulo 2019 Prefetch e Downloads em paralelo de dependências Resolução de dependências (extra.symfony.require) Recipes para instalação, atualização e remoção de dependências Suporte a Alias Packs de dependências Comandos extras para o Composer
  • 13. Prefetch e Downloads em paralelo de dependências Symfony Live São Paulo 2019
  • 14. extra.symfony.require Symfony Live São Paulo 2019 "extra": { "symfony": { "allow-contrib": false, "require": "4.3.*" } }
  • 15. { "bundles": { "SymfonyBundleFrameworkBundleFrameworkBundle": ["all"] }, "copy-from-recipe": { "config/": "%CONFIG_DIR%/", "src/": "%SRC_DIR%/" }, "composer-scripts": { "cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd" }, "env": { "APP_ENV": "dev", "#TRUSTED_HOSTS": "'^localhost|example.com$’” }, "gitignore": [ "/.env.local", "/vendor/" ] } Recipes Symfony Live São Paulo 2019
  • 16. Recipes Symfony Live São Paulo 2019 • bundles • copy-from-recipe • copy-from-package • env • container • makefile • composer-scripts • gitignore • dockerfile ✨ https://github.com/symfony/flex/pull/128 • docker-compose ✨
  • 17. Suporte a Alias Symfony Live São Paulo 2019 Alguns comandos que rodamos durante a demo: $ composer require log annotation $ composer require profiler server --dev log, annotation, profiler, server não são pacotes válidos no packagist (vendor/package) Alias estão disponíveis somente para pacotes oficiais do Symfony.
  • 18. Packs Um grupo de dependências que são agrupadas e instaladas de uma só vez Exemplos: profiler, debug, orm, serializer, encore Symfony Live São Paulo 2019
  • 19. Comandos extras para o Composer Symfony Live São Paulo 2019 $ composer symfony:sync-recipes $ composer symfony:generate-id $ composer symfony:dump-env $ composer symfony:unpack
  • 21. Contribuindo com as Recipes Symfony Live São Paulo 2019 Recipes oficiais https://github.com/symfony/recipes/ Recipes comunidade https://github.com/symfony/recipes-contrib/
  • 22. Dependency Injection Symfony Live São Paulo 2019 parameters: services: _defaults: autowire: true autoconfigure: true App: resource: '../src/*’ exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}’ AppController: resource: '../src/Controller’ tags: ['controller.service_arguments']
  • 23. autowire Symfony Live São Paulo 2019 Maior preferencia pelo tipo da classe (FQN) do que service id Injeção de dependências diretamente no construtor da classe a partir do type-hint
  • 24. <?php namespace AppService; use AppUtilRot13Transformer; class TwitterClient { private $transformer; public function __construct(Rot13Transformer $transformer) { $this->transformer = $transformer; } } autowire Symfony Live São Paulo 2019
  • 25. autoconfigure Symfony Live São Paulo 2019 Registra automaticamente suas classes como commands, event subscribers Somente implemente ou estenda uma classe específica e sua classe receberá a tag necessária
  • 26. <?php use SymfonyComponentEventDispatcherEventSubscriberInterface; use SymfonyComponentHttpKernelKernelEvents; class SetHeaderSusbcriber implements EventSubscriberInterface { public static function getSubscribedEvents() { return [ KernelEvents::RESPONSE => 'onKernelResponse’ ]; } } autoconfigure Symfony Live São Paulo 2019
  • 27. Tag controller.service_argument Symfony Live São Paulo 2019 Controllers agora são tratados como serviços É opcional estender AbstractController Aceitam injeção de dependências a partir do construtor via autowire Com a tag controller.service_argument, os Controllers aceitam injeção de dependências em qualquer método
  • 28. <?php use PsrLogLoggerInterface; class InvoiceController { public function listInvoices(LoggerInterface $logger) { $logger->info('A new way to access services!’); } } Tag controller.service_argument Symfony Live São Paulo 2019
  • 29. Referências Symfony Live São Paulo 2019 https://symfony.com/doc/current/setup/flex.html https://symfony.com/blog/the-end-of-silex https://github.com/symfony/skeleton https://github.com/symfony/website-skeleton https://symfony.com/doc/current/logging.html https://symfony.com/doc/current/profiler.html https://symfony.com/doc/current/service_container.html https://symfony.com/doc/master/service_container/3.3-di-changes.html https://www.sitepoint.com/symfony-flex-paving-path-faster-better-symfony/
  • 30. Avalie essa palestra https://joind.in/talk/1e84c Symfony Live São Paulo 2019 Symfony Brasil SymfonyBrasil
  • 31. Obrigado! Symfony Live São Paulo 2019 gmsantos gmsantos__ gmsantos gmsantos

Notas do Editor

  1. Roteiro: > composer create-project symfony/skeleton=v4.0.0-BETA1 flex > php -S 127.0.0.1:8000 -t public > composer require webserver log > cp ../sample/DefaultController.php src/Controller Descomentar / no routes.yml > bin/console server:start > composer require profiler admin > cp ../sample/Product.php src/Entity Configurar .env e incluir resolver na config doctrine > bin/console doctrine:schema:update Navegar /admin e criar Produto > composer remove admin