Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ZendCon 2015 - The future of Symfony : Symfony3

Sarah KHALIL
October 22, 2015

ZendCon 2015 - The future of Symfony : Symfony3

Symfony 3 is coming out this november! Let's see how to prepare your application to get ready for a smooth migration.

We will review the major deprecations you will need to work on, then the improvements of the new major version and finally how you can help the community by contributing really easily.

Sarah KHALIL

October 22, 2015
Tweet

More Decks by Sarah KHALIL

Other Decks in Technology

Transcript

  1. The future of Symfony Sarah Khalil - October 22nd, 2015

    View Slide

  2. Who I am?
    • Head of
    • Trainer & Developer
    • Enjoying sharer
    • Contributor to

    View Slide

  3. View Slide

  4. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0

    View Slide

  5. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0
    [7adb842] feature #12461 [HttpKernel] Removed deprecated Kernel::init() method (saro0h)
    [73d3770] feature #12731 [Monolog Bridge] Remove deprecated log methods + add unit tests (FlorianLB)
    [e0205ba] feature #12697 [3.0][Process] Remove deprecated methods (romainneutron)
    [5417675] feature #12854 [3.0][HttpKernel] Remove unused method Kernel::isClassInActiveBundle (hacfi)
    [4c1ab52] feature #13046 [3.0] [Bridge] [Swiftmailer] removed Swiftmailer bridge namespace. (hhamon)
    [d8ebcd2] feature #12994 Add LegacyPdoSessionHandler class (jeremylivingston)
    [7dee89b] feature #13129 [Yaml] Removed the ability to parse a file in Yaml::parse() (saro0h)
    [e3872b9] feature #13130 [HttpKernel] Removed deprecated ErrorHandler and ExceptionHandler classes (saro0h)
    [b9f4425] feature #13128 [Form] Removed deprecated form_enctype() (saro0h)
    [a15df69] feature #13127 [FrameworkBundle] Removed the deprecated RouterApacheDumperCommand (saro0h)
    [649061b] feature #13121 [Console] Removed DialogHelper, ProgressHelper and TableHelper (saro0h)
    [a179b90] feature #12460 [3.0] [FrameworkBundle] removed request service occurrences. (hhamon)
    [92a7416] feature #12457 [FrameworkBundle] REFS #11294 Controller class become abstract (mickaelandrieu)
    [900f78a] feature #13216 [3.0] [Config] removed deprecated ReferenceDumper class. (hhamon)
    [9c6d315] feature #13122 [3.0][Form] Removed depracted events PRE_BIND, BIND and POST_BIND (saro0h)
    [eb5f3b4] feature #12663 [FrameworkBundle] remove deprecated method 'createEsi' (FlorianLB)
    [6a6d9c3] feature #13233 [TwigBundle] removed deprecated ActionsExtension (fabpot)
    [2afd614] removed deprecated Twig features

    View Slide

  6. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0
    [7adb842] feature #12461 [HttpKernel] Removed deprecated Kernel::init() method (saro0h)
    [73d3770] feature #12731 [Monolog Bridge] Remove deprecated log methods + add unit tests (FlorianLB)
    [e0205ba] feature #12697 [3.0][Process] Remove deprecated methods (romainneutron)
    [5417675] feature #12854 [3.0][HttpKernel] Remove unused method Kernel::isClassInActiveBundle (hacfi)
    [4c1ab52] feature #13046 [3.0] [Bridge] [Swiftmailer] removed Swiftmailer bridge namespace. (hhamon)
    [d8ebcd2] feature #12994 Add LegacyPdoSessionHandler class (jeremylivingston)
    [7dee89b] feature #13129 [Yaml] Removed the ability to parse a file in Yaml::parse() (saro0h)
    [e3872b9] feature #13130 [HttpKernel] Removed deprecated ErrorHandler and ExceptionHandler classes (saro0h)
    [b9f4425] feature #13128 [Form] Removed deprecated form_enctype() (saro0h)
    [a15df69] feature #13127 [FrameworkBundle] Removed the deprecated RouterApacheDumperCommand (saro0h)
    [649061b] feature #13121 [Console] Removed DialogHelper, ProgressHelper and TableHelper (saro0h)
    [a179b90] feature #12460 [3.0] [FrameworkBundle] removed request service occurrences. (hhamon)
    [92a7416] feature #12457 [FrameworkBundle] REFS #11294 Controller class become abstract (mickaelandrieu)
    [900f78a] feature #13216 [3.0] [Config] removed deprecated ReferenceDumper class. (hhamon)
    [9c6d315] feature #13122 [3.0][Form] Removed depracted events PRE_BIND, BIND and POST_BIND (saro0h)
    [eb5f3b4] feature #12663 [FrameworkBundle] remove deprecated method 'createEsi' (FlorianLB)
    [6a6d9c3] feature #13233 [TwigBundle] removed deprecated ActionsExtension (fabpot)
    [2afd614] removed deprecated Twig features
    [5e623a9] feature #14153 Remove the legacy PDO session handler (dosten)
    [5b117e6] feature #14145 Removed deprecations in Filesystem component (dosten)
    [22c2345] feature #14155 Removed deprecations in DependencyInjection component (dosten)
    [65d4ae0] feature #13324 [WebProfilerBundle] Improved page for logs (hason)
    [791e583] feature #14403 [Form] deprecate read_only option (Tobion)
    [a57ce90] feature #14630 [Translator] Dump translation constants as tree instead of simple list (gepo)
    [2983ecb] feature #14756 [Serializer] Support for array denormalization (derrabus)
    [78cf382] feature #14733 [Security] Add setVoters() on AccessDecisionManager (nicolas-grekas)
    [d04cc5e] feature #14700 [DependencyInjection] [Routing] [Config] Recursive directory loading (lavoiesl, nicolas-grekas)
    [4133aad] feature #14781 [TwigBundle] Reconfigure twig paths when they are updated (chbruyand)
    [567af65] feature #14904 [toolbar] Merged colored icons in toolbar (MJBGO)
    [0315e5d] feature #14903 [profiler][request toolbar] Removed route name from the toolbar (MJBGO)
    [a44ceb3] feature #14912 [HttpFoundation] Postpone setting the date header on a Response (jakzal)
    [15ff865] feature #14993 [Profiler][Translation] added filter. (aitboudad)
    [35f0a32] feature #14928 Removed deprecated stuff from the Console component (dosten)
    [09fabfe] feature #12067 [Form] Added the 'range' FormType (jaytaph)
    [a2bdc72] feature #14979 [Security] removed obsolete translations (fabpot)
    [54bd6f7] feature #12314 [Form] Add "prototype_data" option to collection type (kgilden)
    [04ae391] feature #15019 [Form] Deprecated "cascade_validation" (webmozart)
    [dfb4ccf] feature #14693 [3.0][Translator] changed the visibility of the locale from protected to private. (aitboudad)
    [921b6aa] feature #14927 Removed deprecated stuff from the Config component (dosten)
    [3151614] feature #14660 [Form] moved data trimming logic of TrimListener into StringUtil (issei-m)
    [9f86195] feature #14991 [Console][Table] allow multiple render() calls. (jaytaph)
    [dd7583d] feature #14429 [FrameworkBundle] Add a doctrine cache service definition for validator mapping (jakzal)
    [50e752b] feature #14984 [DependencyInjection] Deprecate scope concept (dosten)
    [93e69e4] feature #15076 [Debug] Allow throwing from __toString() with `return trigger_error($e, E_USER_ERROR);` (nicolas-grekas)
    [674b124] feature #14238 [config] added remove option to ignoreExtraKeys (twifty)
    [ffed0ce] feature #15134 [FrameworkBundle] add option to force web server startup (xabbuh)
    [cad16ac] feature #14764 [TwigBundle] Warmup twig templates in non-standard paths (kbond)
    [32cbfd4] feature #15096 [DependencyInjection] Allow anonymous DefinitionDecorator resolving (nicolas-grekas)
    [bfa28d6] feature #15154 [Validator] Added missing error codes and turned codes into UUIDs (webmozart)
    [fc6ed5b] feature #15141 [DX] [Security] Renamed Token#getKey() to getSecret() (WouterJ)
    [86e77eb] feature #15175 [VarDumper] Ingore PHPUnit and Prophecy object when they are nested (lyrixx)
    [02347d5] feature #15139 [Translation] Add parameters to DataCollectorTranslator (damienalexandre)
    [a48c377] feature #15219 [DependencyInjection] Added ParameterBagInterface::remove (lyrixx)
    [0e5eb6b] feature #14264 [WebProfilerBundle] Add link to show profile of latest request (xelaris)
    [b9f45d1] feature #15290 [DependencyInjection] Forbid container cloning (jakzal)
    [86b218e] feature #15131 [Security] Moved Simple{Form,Pre}AuthenticatorInterfaces to Security\Http (WouterJ)
    [4995900] feature #15185 Implement resettable containers (stof)
    [23919ab] feature #15347 [DependencyInjection][3.0] Add initialized to container interface (znerol)
    [7ec1cd4] Reverted the feature to display different toolbar versions
    [251314e] feature #15160 Redesigned the web debug toolbar (javiereguiluz)
    [ce5363a] feature #15372 [FrameworkBundle] Change the default value of cookie_httponly (jderusse)
    [0de8905] feature #15285 [Config] deprecate cannotBeEmpty() for boolean and numeric nodes (xabbuh)
    [f02a5dc] feature #14987 [FrameworkBundle] Configurable Serializer name converter (dunglas)
    [839e925] feature #15123 [2.8][FrameworkBundle] Allow parameter use_cookies in session configuration (derrabus)
    [3c10715] feature #15418 [Debug] Deprecate ExceptionHandler::createResponse (nicolas-grekas)
    [5b38d74] feature #15079 [Form] Deprecated FormTypeInterface::getName() and passing of type instances (webmozart)
    [bffca95] feature #15013 [Security] Removed security-acl from the core (iltar)
    [c73e0a3] feature #15422 [Debug] Remove deprecated ExceptionHandler::createResponse (nicolas-grekas)
    [c856a01] feature #15382 [Console] Use readline for user input when available #DX (michaelperrin)
    [317d30b] feature #13990 [Form] Add flexibility for EntityType (raziel057)
    [64d0507] feature #15433 Allow to define Enum nodes with 1 single element (javiereguiluz)
    [a00687f] feature #15416 [DependencyInjection] Added a way to define the priority of service decoration (dosten)
    [e6d7534] feature #15430 [SecurityBundle] Remove deprecated code (dosten)
    [c8e05e3] feature #15452 [Translator] [Xliff] Add support for target attributes. (marcosdsanchez)
    [c1c5f1d] feature #15555 [VarDumper] Add caster for pgsql resources (nicolas-grekas)
    [19f4ada] fixed tests using deprecation features
    [d4441e9] feature #15551 [Translation] added element metadata to XliffFileDumper (aitboudad)

    View Slide

  7. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0
    [7adb842] feature #12461 [HttpKernel] Removed deprecated Kernel::init() method (saro0h)
    [73d3770] feature #12731 [Monolog Bridge] Remove deprecated log methods + add unit tests (FlorianLB)
    [e0205ba] feature #12697 [3.0][Process] Remove deprecated methods (romainneutron)
    [5417675] feature #12854 [3.0][HttpKernel] Remove unused method Kernel::isClassInActiveBundle (hacfi)
    [4c1ab52] feature #13046 [3.0] [Bridge] [Swiftmailer] removed Swiftmailer bridge namespace. (hhamon)
    [d8ebcd2] feature #12994 Add LegacyPdoSessionHandler class (jeremylivingston)
    [7dee89b] feature #13129 [Yaml] Removed the ability to parse a file in Yaml::parse() (saro0h)
    [e3872b9] feature #13130 [HttpKernel] Removed deprecated ErrorHandler and ExceptionHandler classes (saro0h)
    [b9f4425] feature #13128 [Form] Removed deprecated form_enctype() (saro0h)
    [a15df69] feature #13127 [FrameworkBundle] Removed the deprecated RouterApacheDumperCommand (saro0h)
    [649061b] feature #13121 [Console] Removed DialogHelper, ProgressHelper and TableHelper (saro0h)
    [a179b90] feature #12460 [3.0] [FrameworkBundle] removed request service occurrences. (hhamon)
    [92a7416] feature #12457 [FrameworkBundle] REFS #11294 Controller class become abstract (mickaelandrieu)
    [900f78a] feature #13216 [3.0] [Config] removed deprecated ReferenceDumper class. (hhamon)
    [9c6d315] feature #13122 [3.0][Form] Removed depracted events PRE_BIND, BIND and POST_BIND (saro0h)
    [eb5f3b4] feature #12663 [FrameworkBundle] remove deprecated method 'createEsi' (FlorianLB)
    [6a6d9c3] feature #13233 [TwigBundle] removed deprecated ActionsExtension (fabpot)
    [2afd614] removed deprecated Twig features
    [86278cd] [Routing] remove deprecated features from routing
    [4ca9ab3] [FrameworkBundle] remove deprecated routing features
    [7b6f6d7] feature #13409 removed deprecated Twig features (fabpot)
    [cca5e41] feature #13203 [3.0] [ClassLoader] removed deprecated UniversalClassLoader and DebugClassLoader classes. (hhamon)
    [9f195cd] feature #13260 [3.0][EventDispatcher][Event] removed deprecated methods (aitboudad)
    [270818d] feature #13348 [3.0][Monolog] Remove deprecated interface and deprecated methods (rosier)
    [9ff47b8] feature #13086 [Console] Define isVerbose(), etc. methods in OutputInterface (frne)
    [2e496e1] feature #13258 [HttpFoundation] remove deprecated : FlashBag don't implement anymore IteratorAggregate (FlorianLB)
    [f7395c7] feature #13444 [Serializer] Remove deprecated JSON error methods (dunglas)
    [589179c] feature #13396 [Routing] remove deprecations for 3.0 (Tobion)
    [5e90ef4] feature #13407 [Form] Remove deprecated setDefaultOptions and OptionsResolverInterface (peterrehm)
    [8018d4b] removed deprecated asset feature
    [52badd0] removed deprecated Twig features
    [d948837] feature #13666 removed deprecated asset feature (fabpot)
    [fffcc24] feature #13752 [PropertyAccess] remove deprecations for 3.0 (Tobion)
    [ad1888b] feature #13756 [3.0][Console] Added type hint (francisbesset)
    [f538167] feature #13808 [OptionsResolver] removed deprecated functionality (Tobion)
    [156c4a2] feature #14070 removed all *.class parameters (fabpot)
    [01cebda] feature #14091 [3.0] [FrameworkBundle] Drop backward compatibility for debug commands (matthieuauger)
    [aec88f4] feature #14119 Removed deprecation in YAML component (saro0h)
    [e01a9a6] feature #14118 Removed deprecations in Console component (saro0h)
    [2669016] feature #14120 Removed deprecation in translation component (saro0h)
    [0409baa] feature #14156 Remove deprecated Locale component (stloyd)
    [8d6929b] feature #14150 Removed deprecations in Templating component (dosten)
    [637c8bb] feature #14147 Removed deprecations in Process component (dosten)
    [5d7f909] feature #14169 [Debug] Removed deprecated interfaces (nicolas-grekas)
    [630a982] feature #14220 [3.0][Console][OutputStyle] Implements verbosity levels methods (ogizanagi)
    [73853c4] feature #14317 [3.0][FrameworkBundle][lint commands ] remove deprecated alias. (vincentaubert)
    [6bab76d] feature #14383 [FrameworkBundle][Server Command] add address port number option. (aitboudad)
    [862bdf1] feature #14359 [Translation] added FileLoader. (aitboudad)
    [449b18c] feature #14424 [VarDumper] Added support for SplFileInfo (lyrixx)
    [e861134] feature #14431 [Console] Bind the closure (code) to the Command if possible (lyrixx)
    [a4e3e07] feature #14443 [VarDumper] Allow preserving a subset of cut arrays (nicolas-grekas)
    [7e29d2c] feature #14473 [DX] Minor improvement for the translation:debug output (nicolasdewez)
    [1973960] feature #14320 [Translation] added an --all option to the debug:translation command #14237 (sgehrig)
    [55b3525] feature #14546 [Translator] deprecate getMessages in favor of getCatalogue. (aitboudad)
    [da0194b] feature #14563 [FrameworkBundle][EventDispatcher] Add priorities to the debug:event-dispatcher command (Seldaek)
    [88b7e7c] feature #14561 [FrameworkBundle][DX] Add option to specify additional translation loading paths (Seldaek)
    [5e623a9] feature #14153 Remove the legacy PDO session handler (dosten)
    [5b117e6] feature #14145 Removed deprecations in Filesystem component (dosten)
    [22c2345] feature #14155 Removed deprecations in DependencyInjection component (dosten)
    [65d4ae0] feature #13324 [WebProfilerBundle] Improved page for logs (hason)
    [791e583] feature #14403 [Form] deprecate read_only option (Tobion)
    [a57ce90] feature #14630 [Translator] Dump translation constants as tree instead of simple list (gepo)
    [2983ecb] feature #14756 [Serializer] Support for array denormalization (derrabus)
    [78cf382] feature #14733 [Security] Add setVoters() on AccessDecisionManager (nicolas-grekas)
    [d04cc5e] feature #14700 [DependencyInjection] [Routing] [Config] Recursive directory loading (lavoiesl, nicolas-grekas)
    [4133aad] feature #14781 [TwigBundle] Reconfigure twig paths when they are updated (chbruyand)
    [567af65] feature #14904 [toolbar] Merged colored icons in toolbar (MJBGO)
    [0315e5d] feature #14903 [profiler][request toolbar] Removed route name from the toolbar (MJBGO)
    [a44ceb3] feature #14912 [HttpFoundation] Postpone setting the date header on a Response (jakzal)
    [15ff865] feature #14993 [Profiler][Translation] added filter. (aitboudad)
    [35f0a32] feature #14928 Removed deprecated stuff from the Console component (dosten)
    [09fabfe] feature #12067 [Form] Added the 'range' FormType (jaytaph)
    [a2bdc72] feature #14979 [Security] removed obsolete translations (fabpot)
    [54bd6f7] feature #12314 [Form] Add "prototype_data" option to collection type (kgilden)
    [04ae391] feature #15019 [Form] Deprecated "cascade_validation" (webmozart)
    [dfb4ccf] feature #14693 [3.0][Translator] changed the visibility of the locale from protected to private. (aitboudad)
    [921b6aa] feature #14927 Removed deprecated stuff from the Config component (dosten)
    [3151614] feature #14660 [Form] moved data trimming logic of TrimListener into StringUtil (issei-m)
    [9f86195] feature #14991 [Console][Table] allow multiple render() calls. (jaytaph)
    [dd7583d] feature #14429 [FrameworkBundle] Add a doctrine cache service definition for validator mapping (jakzal)
    [50e752b] feature #14984 [DependencyInjection] Deprecate scope concept (dosten)
    [93e69e4] feature #15076 [Debug] Allow throwing from __toString() with `return trigger_error($e, E_USER_ERROR);` (nicolas-grekas)
    [674b124] feature #14238 [config] added remove option to ignoreExtraKeys (twifty)
    [ffed0ce] feature #15134 [FrameworkBundle] add option to force web server startup (xabbuh)
    [cad16ac] feature #14764 [TwigBundle] Warmup twig templates in non-standard paths (kbond)
    [32cbfd4] feature #15096 [DependencyInjection] Allow anonymous DefinitionDecorator resolving (nicolas-grekas)
    [bfa28d6] feature #15154 [Validator] Added missing error codes and turned codes into UUIDs (webmozart)
    [fc6ed5b] feature #15141 [DX] [Security] Renamed Token#getKey() to getSecret() (WouterJ)
    [86e77eb] feature #15175 [VarDumper] Ingore PHPUnit and Prophecy object when they are nested (lyrixx)
    [02347d5] feature #15139 [Translation] Add parameters to DataCollectorTranslator (damienalexandre)
    [a48c377] feature #15219 [DependencyInjection] Added ParameterBagInterface::remove (lyrixx)
    [0e5eb6b] feature #14264 [WebProfilerBundle] Add link to show profile of latest request (xelaris)
    [b9f45d1] feature #15290 [DependencyInjection] Forbid container cloning (jakzal)
    [86b218e] feature #15131 [Security] Moved Simple{Form,Pre}AuthenticatorInterfaces to Security\Http (WouterJ)
    [4995900] feature #15185 Implement resettable containers (stof)
    [23919ab] feature #15347 [DependencyInjection][3.0] Add initialized to container interface (znerol)
    [7ec1cd4] Reverted the feature to display different toolbar versions
    [251314e] feature #15160 Redesigned the web debug toolbar (javiereguiluz)
    [ce5363a] feature #15372 [FrameworkBundle] Change the default value of cookie_httponly (jderusse)
    [0de8905] feature #15285 [Config] deprecate cannotBeEmpty() for boolean and numeric nodes (xabbuh)
    [f02a5dc] feature #14987 [FrameworkBundle] Configurable Serializer name converter (dunglas)
    [839e925] feature #15123 [2.8][FrameworkBundle] Allow parameter use_cookies in session configuration (derrabus)
    [3c10715] feature #15418 [Debug] Deprecate ExceptionHandler::createResponse (nicolas-grekas)
    [5b38d74] feature #15079 [Form] Deprecated FormTypeInterface::getName() and passing of type instances (webmozart)
    [bffca95] feature #15013 [Security] Removed security-acl from the core (iltar)
    [c73e0a3] feature #15422 [Debug] Remove deprecated ExceptionHandler::createResponse (nicolas-grekas)
    [c856a01] feature #15382 [Console] Use readline for user input when available #DX (michaelperrin)
    [317d30b] feature #13990 [Form] Add flexibility for EntityType (raziel057)
    [64d0507] feature #15433 Allow to define Enum nodes with 1 single element (javiereguiluz)
    [a00687f] feature #15416 [DependencyInjection] Added a way to define the priority of service decoration (dosten)
    [e6d7534] feature #15430 [SecurityBundle] Remove deprecated code (dosten)
    [c8e05e3] feature #15452 [Translator] [Xliff] Add support for target attributes. (marcosdsanchez)
    [c1c5f1d] feature #15555 [VarDumper] Add caster for pgsql resources (nicolas-grekas)
    [19f4ada] fixed tests using deprecation features
    [d4441e9] feature #15551 [Translation] added element metadata to XliffFileDumper (aitboudad)

    View Slide

  8. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0
    [7adb842] feature #12461 [HttpKernel] Removed deprecated Kernel::init() method (saro0h)
    [73d3770] feature #12731 [Monolog Bridge] Remove deprecated log methods + add unit tests (FlorianLB)
    [e0205ba] feature #12697 [3.0][Process] Remove deprecated methods (romainneutron)
    [5417675] feature #12854 [3.0][HttpKernel] Remove unused method Kernel::isClassInActiveBundle (hacfi)
    [4c1ab52] feature #13046 [3.0] [Bridge] [Swiftmailer] removed Swiftmailer bridge namespace. (hhamon)
    [d8ebcd2] feature #12994 Add LegacyPdoSessionHandler class (jeremylivingston)
    [7dee89b] feature #13129 [Yaml] Removed the ability to parse a file in Yaml::parse() (saro0h)
    [e3872b9] feature #13130 [HttpKernel] Removed deprecated ErrorHandler and ExceptionHandler classes (saro0h)
    [b9f4425] feature #13128 [Form] Removed deprecated form_enctype() (saro0h)
    [a15df69] feature #13127 [FrameworkBundle] Removed the deprecated RouterApacheDumperCommand (saro0h)
    [649061b] feature #13121 [Console] Removed DialogHelper, ProgressHelper and TableHelper (saro0h)
    [a179b90] feature #12460 [3.0] [FrameworkBundle] removed request service occurrences. (hhamon)
    [92a7416] feature #12457 [FrameworkBundle] REFS #11294 Controller class become abstract (mickaelandrieu)
    [900f78a] feature #13216 [3.0] [Config] removed deprecated ReferenceDumper class. (hhamon)
    [9c6d315] feature #13122 [3.0][Form] Removed depracted events PRE_BIND, BIND and POST_BIND (saro0h)
    [eb5f3b4] feature #12663 [FrameworkBundle] remove deprecated method 'createEsi' (FlorianLB)
    [6a6d9c3] feature #13233 [TwigBundle] removed deprecated ActionsExtension (fabpot)
    [2afd614] removed deprecated Twig features
    [86278cd] [Routing] remove deprecated features from routing
    [4ca9ab3] [FrameworkBundle] remove deprecated routing features
    [7b6f6d7] feature #13409 removed deprecated Twig features (fabpot)
    [cca5e41] feature #13203 [3.0] [ClassLoader] removed deprecated UniversalClassLoader and DebugClassLoader classes. (hhamon)
    [9f195cd] feature #13260 [3.0][EventDispatcher][Event] removed deprecated methods (aitboudad)
    [270818d] feature #13348 [3.0][Monolog] Remove deprecated interface and deprecated methods (rosier)
    [9ff47b8] feature #13086 [Console] Define isVerbose(), etc. methods in OutputInterface (frne)
    [2e496e1] feature #13258 [HttpFoundation] remove deprecated : FlashBag don't implement anymore IteratorAggregate (FlorianLB)
    [f7395c7] feature #13444 [Serializer] Remove deprecated JSON error methods (dunglas)
    [589179c] feature #13396 [Routing] remove deprecations for 3.0 (Tobion)
    [5e90ef4] feature #13407 [Form] Remove deprecated setDefaultOptions and OptionsResolverInterface (peterrehm)
    [8018d4b] removed deprecated asset feature
    [52badd0] removed deprecated Twig features
    [d948837] feature #13666 removed deprecated asset feature (fabpot)
    [fffcc24] feature #13752 [PropertyAccess] remove deprecations for 3.0 (Tobion)
    [ad1888b] feature #13756 [3.0][Console] Added type hint (francisbesset)
    [f538167] feature #13808 [OptionsResolver] removed deprecated functionality (Tobion)
    [156c4a2] feature #14070 removed all *.class parameters (fabpot)
    [01cebda] feature #14091 [3.0] [FrameworkBundle] Drop backward compatibility for debug commands (matthieuauger)
    [aec88f4] feature #14119 Removed deprecation in YAML component (saro0h)
    [e01a9a6] feature #14118 Removed deprecations in Console component (saro0h)
    [2669016] feature #14120 Removed deprecation in translation component (saro0h)
    [0409baa] feature #14156 Remove deprecated Locale component (stloyd)
    [8d6929b] feature #14150 Removed deprecations in Templating component (dosten)
    [637c8bb] feature #14147 Removed deprecations in Process component (dosten)
    [5d7f909] feature #14169 [Debug] Removed deprecated interfaces (nicolas-grekas)
    [630a982] feature #14220 [3.0][Console][OutputStyle] Implements verbosity levels methods (ogizanagi)
    [73853c4] feature #14317 [3.0][FrameworkBundle][lint commands ] remove deprecated alias. (vincentaubert)
    [6bab76d] feature #14383 [FrameworkBundle][Server Command] add address port number option. (aitboudad)
    [862bdf1] feature #14359 [Translation] added FileLoader. (aitboudad)
    [449b18c] feature #14424 [VarDumper] Added support for SplFileInfo (lyrixx)
    [e861134] feature #14431 [Console] Bind the closure (code) to the Command if possible (lyrixx)
    [a4e3e07] feature #14443 [VarDumper] Allow preserving a subset of cut arrays (nicolas-grekas)
    [7e29d2c] feature #14473 [DX] Minor improvement for the translation:debug output (nicolasdewez)
    [1973960] feature #14320 [Translation] added an --all option to the debug:translation command #14237 (sgehrig)
    [55b3525] feature #14546 [Translator] deprecate getMessages in favor of getCatalogue. (aitboudad)
    [da0194b] feature #14563 [FrameworkBundle][EventDispatcher] Add priorities to the debug:event-dispatcher command (Seldaek)
    [88b7e7c] feature #14561 [FrameworkBundle][DX] Add option to specify additional translation loading paths (Seldaek)
    [5e623a9] feature #14153 Remove the legacy PDO session handler (dosten)
    [5b117e6] feature #14145 Removed deprecations in Filesystem component (dosten)
    [22c2345] feature #14155 Removed deprecations in DependencyInjection component (dosten)
    [65d4ae0] feature #13324 [WebProfilerBundle] Improved page for logs (hason)
    [791e583] feature #14403 [Form] deprecate read_only option (Tobion)
    [a57ce90] feature #14630 [Translator] Dump translation constants as tree instead of simple list (gepo)
    [2983ecb] feature #14756 [Serializer] Support for array denormalization (derrabus)
    [78cf382] feature #14733 [Security] Add setVoters() on AccessDecisionManager (nicolas-grekas)
    [d04cc5e] feature #14700 [DependencyInjection] [Routing] [Config] Recursive directory loading (lavoiesl, nicolas-grekas)
    [4133aad] feature #14781 [TwigBundle] Reconfigure twig paths when they are updated (chbruyand)
    [567af65] feature #14904 [toolbar] Merged colored icons in toolbar (MJBGO)
    [0315e5d] feature #14903 [profiler][request toolbar] Removed route name from the toolbar (MJBGO)
    [a44ceb3] feature #14912 [HttpFoundation] Postpone setting the date header on a Response (jakzal)
    [15ff865] feature #14993 [Profiler][Translation] added filter. (aitboudad)
    [35f0a32] feature #14928 Removed deprecated stuff from the Console component (dosten)
    [09fabfe] feature #12067 [Form] Added the 'range' FormType (jaytaph)
    [a2bdc72] feature #14979 [Security] removed obsolete translations (fabpot)
    [54bd6f7] feature #12314 [Form] Add "prototype_data" option to collection type (kgilden)
    [04ae391] feature #15019 [Form] Deprecated "cascade_validation" (webmozart)
    [dfb4ccf] feature #14693 [3.0][Translator] changed the visibility of the locale from protected to private. (aitboudad)
    [921b6aa] feature #14927 Removed deprecated stuff from the Config component (dosten)
    [3151614] feature #14660 [Form] moved data trimming logic of TrimListener into StringUtil (issei-m)
    [9f86195] feature #14991 [Console][Table] allow multiple render() calls. (jaytaph)
    [dd7583d] feature #14429 [FrameworkBundle] Add a doctrine cache service definition for validator mapping (jakzal)
    [50e752b] feature #14984 [DependencyInjection] Deprecate scope concept (dosten)
    [93e69e4] feature #15076 [Debug] Allow throwing from __toString() with `return trigger_error($e, E_USER_ERROR);` (nicolas-grekas)
    [674b124] feature #14238 [config] added remove option to ignoreExtraKeys (twifty)
    [ffed0ce] feature #15134 [FrameworkBundle] add option to force web server startup (xabbuh)
    [cad16ac] feature #14764 [TwigBundle] Warmup twig templates in non-standard paths (kbond)
    [32cbfd4] feature #15096 [DependencyInjection] Allow anonymous DefinitionDecorator resolving (nicolas-grekas)
    [bfa28d6] feature #15154 [Validator] Added missing error codes and turned codes into UUIDs (webmozart)
    [fc6ed5b] feature #15141 [DX] [Security] Renamed Token#getKey() to getSecret() (WouterJ)
    [86e77eb] feature #15175 [VarDumper] Ingore PHPUnit and Prophecy object when they are nested (lyrixx)
    [02347d5] feature #15139 [Translation] Add parameters to DataCollectorTranslator (damienalexandre)
    [a48c377] feature #15219 [DependencyInjection] Added ParameterBagInterface::remove (lyrixx)
    [0e5eb6b] feature #14264 [WebProfilerBundle] Add link to show profile of latest request (xelaris)
    [b9f45d1] feature #15290 [DependencyInjection] Forbid container cloning (jakzal)
    [86b218e] feature #15131 [Security] Moved Simple{Form,Pre}AuthenticatorInterfaces to Security\Http (WouterJ)
    [4995900] feature #15185 Implement resettable containers (stof)
    [23919ab] feature #15347 [DependencyInjection][3.0] Add initialized to container interface (znerol)
    [7ec1cd4] Reverted the feature to display different toolbar versions
    [251314e] feature #15160 Redesigned the web debug toolbar (javiereguiluz)
    [ce5363a] feature #15372 [FrameworkBundle] Change the default value of cookie_httponly (jderusse)
    [0de8905] feature #15285 [Config] deprecate cannotBeEmpty() for boolean and numeric nodes (xabbuh)
    [f02a5dc] feature #14987 [FrameworkBundle] Configurable Serializer name converter (dunglas)
    [839e925] feature #15123 [2.8][FrameworkBundle] Allow parameter use_cookies in session configuration (derrabus)
    [3c10715] feature #15418 [Debug] Deprecate ExceptionHandler::createResponse (nicolas-grekas)
    [5b38d74] feature #15079 [Form] Deprecated FormTypeInterface::getName() and passing of type instances (webmozart)
    [bffca95] feature #15013 [Security] Removed security-acl from the core (iltar)
    [c73e0a3] feature #15422 [Debug] Remove deprecated ExceptionHandler::createResponse (nicolas-grekas)
    [c856a01] feature #15382 [Console] Use readline for user input when available #DX (michaelperrin)
    [317d30b] feature #13990 [Form] Add flexibility for EntityType (raziel057)
    [64d0507] feature #15433 Allow to define Enum nodes with 1 single element (javiereguiluz)
    [a00687f] feature #15416 [DependencyInjection] Added a way to define the priority of service decoration (dosten)
    [e6d7534] feature #15430 [SecurityBundle] Remove deprecated code (dosten)
    [c8e05e3] feature #15452 [Translator] [Xliff] Add support for target attributes. (marcosdsanchez)
    [c1c5f1d] feature #15555 [VarDumper] Add caster for pgsql resources (nicolas-grekas)
    [19f4ada] fixed tests using deprecation features
    [d4441e9] feature #15551 [Translation] added element metadata to XliffFileDumper (aitboudad)
    [47d001e] feature #15934 Add a non-static API for the CssSelector component (stof)
    [181d470] feature #15919 [Form] Guess currency field based on validator constraint (enumag)
    [8d1cee9] feature #15929 [3.0][Config] Remove ResourceInterface::getResource() which was deprecated in 2.8 (mpdude)
    [5322cbb] feature #15964 Symfony Console Style tweaks (javiereguiluz)
    [d65f864] feature #15972 [Console] Updated the styles of the server commands (javiereguiluz)
    [7bc3ec0] feature #15978 Updated the styles of the cache commands (javiereguiluz)
    [b258949] feature #16007 [HttpFoundation] deprecate finding deep items in request parameters (xabbuh)
    [8f44cc3] feature #15944 Remove profiler storages (javiereguiluz)
    [4d855e2] feature #16011 [FrameworkBundle] Tag deprecated services (nicolas-grekas)
    [ac8fd04] feature #15838 [VarDumper] Dump PHP+Twig code excerpts in backtraces (nicolas-grekas)
    [2f44171] feature #15503 UI & CSS improvement to new toolbar (WouterJ)
    [3b3431e] feature #15938 [Console] Bind input before executing the COMMAND event (WouterJ)
    [aa2e7e4] feature #15899 [3.0][Security] Remove deprecated features (WouterJ)
    [dbb099d] feature #16029 [FrameworkBundle][TwigBridge] do not render empty form action attributes (xabbuh)
    [557e416] feature #16018 [HttpKernel] removed deprecated profiler storages (fabpot)
    [763d478] feature #16019 [HttpFoundation] removed the ParameterBag::get() deep argument (fabpot)
    [437398d] [3.0][Security] Remove deprecated features (follow up of #15899)
    [fc41cf0] [3.0][FrameworkBundle] Removed deprecated features
    [d226d35] feature #15904 [3.0][FrameworkBundle] Removed deprecated features (WouterJ)
    [6dc3cf9] [3.0][DoctrineBridge] Removed deprecated features
    [7bab317] feature #15900 [3.0][DoctrineBridge] Removed deprecated features (WouterJ)
    [925ecaf] [Validator] removed deprecated features in Constraints
    [17cedd3] [Form] removed usage of Validator deprecated features
    [33f3400] [Form] removed deprecated features
    [48d1169] feature #16024 [Validator] removed deprecated features in Validator and Form (fabpot)
    [ffddafc] feature #15196 [HttpKernel] make RequestStack parameter required (Tobion)
    [54e3d71] feature #15778 Fluid interface for building routes in PHP (weaverryan)
    [99745e1] feature #15742 Using a service as a router resource (weaverryan)
    [aa7d4e6] feature #16020 [CssSelector] removed the deprecated CssSelector class (fabpot)
    [4af8a55] feature #16057 Deprecate loading multiple documents in the same crawler (stof)
    [9e60980] feature #16058 Prevent adding non-DOMElement elements in DomCrawler (stof)
    [6413fb7] feature #16063 [VarDumper] Add $this->getDump($var) when using VarDumperTestTrait (nicolas-grekas)
    [584cfc2] feature #16069 [WebProfilerBundle] Move AjaxCollector to HttpKernel for use with Silex (glaubinix, fabpot)
    [5ab9954] feature #16067 [3.0] Remove more deprecated interfaces in Form and Validator (nicolas-grekas)
    [8fdb412] feature #8967 [HttpFoundation] Request->getRequestFormat should only rely on the request attributes (pvandomm
    [7e3c4a6] feature #16035 [3.0][Security] Remove deprecated features (follow up of #15899) (Koc)
    [1e0adf4] feature #14721 [Security] Configuring a user checker per firewall (iltar)
    [d606e76] feature #16075 [3.0] Clean Form, Validator, DowCrawler and some more (nicolas-grekas)
    [478ad54] feature #15613 [DependencyInjection] Add autowiring capabilities (dunglas)
    [3567548] feature #16102 Simplify AbstractVoter (Koc)
    [88e2d70] feature #16076 [HttpFoundation] change precedence of parameters in Request::get (Tobion)
    [40cf393] feature #14908 Include working directory in ProcessFailedException (Rvanlaak)
    [8b15af9] feature #16125 Replace is_callable checks with type hints (mpajunen, nicolas-grekas)
    [21e50d5] feature #14044 [Console] [Helper] [Table] Columns styles (MAXakaWIZARD)
    [f72a7c3] feature #16107 [3.0] Various deprecations cleanups (nicolas-grekas)
    [a1c7af1] feature #16001 [DI] Warn when a definition relies on a deprecated class in ContainerBuilder::createService() (nicolas-
    [141f9eb] feature #15879 Deprecate the SecureRandom class (pierredup)
    [10389e3] feature #16189 [PhpUnitBridge] Add SkippedTestsListener to collect and replay skipped tests (nicolas-grekas)
    [6907498] feature #15025 [2.8] [Form] Rename CollectionType options for entries (WouterJ)
    [b03ccb3] feature #16198 [EventDispatcher] added EventDispatcher::ge

    View Slide

  9. Agenda
    • Full change log of features added from 2.7.5 to 2.8/3.0
    [7adb842] feature #12461 [HttpKernel] Removed deprecated Kernel::init() method (saro0h)
    [73d3770] feature #12731 [Monolog Bridge] Remove deprecated log methods + add unit tests (FlorianLB)
    [e0205ba] feature #12697 [3.0][Process] Remove deprecated methods (romainneutron)
    [5417675] feature #12854 [3.0][HttpKernel] Remove unused method Kernel::isClassInActiveBundle (hacfi)
    [4c1ab52] feature #13046 [3.0] [Bridge] [Swiftmailer] removed Swiftmailer bridge namespace. (hhamon)
    [d8ebcd2] feature #12994 Add LegacyPdoSessionHandler class (jeremylivingston)
    [7dee89b] feature #13129 [Yaml] Removed the ability to parse a file in Yaml::parse() (saro0h)
    [e3872b9] feature #13130 [HttpKernel] Removed deprecated ErrorHandler and ExceptionHandler classes (saro0h)
    [b9f4425] feature #13128 [Form] Removed deprecated form_enctype() (saro0h)
    [a15df69] feature #13127 [FrameworkBundle] Removed the deprecated RouterApacheDumperCommand (saro0h)
    [649061b] feature #13121 [Console] Removed DialogHelper, ProgressHelper and TableHelper (saro0h)
    [a179b90] feature #12460 [3.0] [FrameworkBundle] removed request service occurrences. (hhamon)
    [92a7416] feature #12457 [FrameworkBundle] REFS #11294 Controller class become abstract (mickaelandrieu)
    [900f78a] feature #13216 [3.0] [Config] removed deprecated ReferenceDumper class. (hhamon)
    [9c6d315] feature #13122 [3.0][Form] Removed depracted events PRE_BIND, BIND and POST_BIND (saro0h)
    [eb5f3b4] feature #12663 [FrameworkBundle] remove deprecated method 'createEsi' (FlorianLB)
    [6a6d9c3] feature #13233 [TwigBundle] removed deprecated ActionsExtension (fabpot)
    [2afd614] removed deprecated Twig features
    [86278cd] [Routing] remove deprecated features from routing
    [4ca9ab3] [FrameworkBundle] remove deprecated routing features
    [7b6f6d7] feature #13409 removed deprecated Twig features (fabpot)
    [cca5e41] feature #13203 [3.0] [ClassLoader] removed deprecated UniversalClassLoader and DebugClassLoader classes. (hhamon)
    [9f195cd] feature #13260 [3.0][EventDispatcher][Event] removed deprecated methods (aitboudad)
    [270818d] feature #13348 [3.0][Monolog] Remove deprecated interface and deprecated methods (rosier)
    [9ff47b8] feature #13086 [Console] Define isVerbose(), etc. methods in OutputInterface (frne)
    [2e496e1] feature #13258 [HttpFoundation] remove deprecated : FlashBag don't implement anymore IteratorAggregate (FlorianLB)
    [f7395c7] feature #13444 [Serializer] Remove deprecated JSON error methods (dunglas)
    [589179c] feature #13396 [Routing] remove deprecations for 3.0 (Tobion)
    [5e90ef4] feature #13407 [Form] Remove deprecated setDefaultOptions and OptionsResolverInterface (peterrehm)
    [8018d4b] removed deprecated asset feature
    [52badd0] removed deprecated Twig features
    [d948837] feature #13666 removed deprecated asset feature (fabpot)
    [fffcc24] feature #13752 [PropertyAccess] remove deprecations for 3.0 (Tobion)
    [ad1888b] feature #13756 [3.0][Console] Added type hint (francisbesset)
    [f538167] feature #13808 [OptionsResolver] removed deprecated functionality (Tobion)
    [156c4a2] feature #14070 removed all *.class parameters (fabpot)
    [01cebda] feature #14091 [3.0] [FrameworkBundle] Drop backward compatibility for debug commands (matthieuauger)
    [aec88f4] feature #14119 Removed deprecation in YAML component (saro0h)
    [e01a9a6] feature #14118 Removed deprecations in Console component (saro0h)
    [2669016] feature #14120 Removed deprecation in translation component (saro0h)
    [0409baa] feature #14156 Remove deprecated Locale component (stloyd)
    [8d6929b] feature #14150 Removed deprecations in Templating component (dosten)
    [637c8bb] feature #14147 Removed deprecations in Process component (dosten)
    [5d7f909] feature #14169 [Debug] Removed deprecated interfaces (nicolas-grekas)
    [630a982] feature #14220 [3.0][Console][OutputStyle] Implements verbosity levels methods (ogizanagi)
    [73853c4] feature #14317 [3.0][FrameworkBundle][lint commands ] remove deprecated alias. (vincentaubert)
    [6bab76d] feature #14383 [FrameworkBundle][Server Command] add address port number option. (aitboudad)
    [862bdf1] feature #14359 [Translation] added FileLoader. (aitboudad)
    [449b18c] feature #14424 [VarDumper] Added support for SplFileInfo (lyrixx)
    [e861134] feature #14431 [Console] Bind the closure (code) to the Command if possible (lyrixx)
    [a4e3e07] feature #14443 [VarDumper] Allow preserving a subset of cut arrays (nicolas-grekas)
    [7e29d2c] feature #14473 [DX] Minor improvement for the translation:debug output (nicolasdewez)
    [1973960] feature #14320 [Translation] added an --all option to the debug:translation command #14237 (sgehrig)
    [55b3525] feature #14546 [Translator] deprecate getMessages in favor of getCatalogue. (aitboudad)
    [da0194b] feature #14563 [FrameworkBundle][EventDispatcher] Add priorities to the debug:event-dispatcher command (Seldaek)
    [88b7e7c] feature #14561 [FrameworkBundle][DX] Add option to specify additional translation loading paths (Seldaek)
    [5e623a9] feature #14153 Remove the legacy PDO session handler (dosten)
    [5b117e6] feature #14145 Removed deprecations in Filesystem component (dosten)
    [22c2345] feature #14155 Removed deprecations in DependencyInjection component (dosten)
    [65d4ae0] feature #13324 [WebProfilerBundle] Improved page for logs (hason)
    [791e583] feature #14403 [Form] deprecate read_only option (Tobion)
    [a57ce90] feature #14630 [Translator] Dump translation constants as tree instead of simple list (gepo)
    [2983ecb] feature #14756 [Serializer] Support for array denormalization (derrabus)
    [78cf382] feature #14733 [Security] Add setVoters() on AccessDecisionManager (nicolas-grekas)
    [d04cc5e] feature #14700 [DependencyInjection] [Routing] [Config] Recursive directory loading (lavoiesl, nicolas-grekas)
    [4133aad] feature #14781 [TwigBundle] Reconfigure twig paths when they are updated (chbruyand)
    [567af65] feature #14904 [toolbar] Merged colored icons in toolbar (MJBGO)
    [0315e5d] feature #14903 [profiler][request toolbar] Removed route name from the toolbar (MJBGO)
    [a44ceb3] feature #14912 [HttpFoundation] Postpone setting the date header on a Response (jakzal)
    [15ff865] feature #14993 [Profiler][Translation] added filter. (aitboudad)
    [35f0a32] feature #14928 Removed deprecated stuff from the Console component (dosten)
    [09fabfe] feature #12067 [Form] Added the 'range' FormType (jaytaph)
    [a2bdc72] feature #14979 [Security] removed obsolete translations (fabpot)
    [54bd6f7] feature #12314 [Form] Add "prototype_data" option to collection type (kgilden)
    [04ae391] feature #15019 [Form] Deprecated "cascade_validation" (webmozart)
    [dfb4ccf] feature #14693 [3.0][Translator] changed the visibility of the locale from protected to private. (aitboudad)
    [921b6aa] feature #14927 Removed deprecated stuff from the Config component (dosten)
    [3151614] feature #14660 [Form] moved data trimming logic of TrimListener into StringUtil (issei-m)
    [9f86195] feature #14991 [Console][Table] allow multiple render() calls. (jaytaph)
    [dd7583d] feature #14429 [FrameworkBundle] Add a doctrine cache service definition for validator mapping (jakzal)
    [50e752b] feature #14984 [DependencyInjection] Deprecate scope concept (dosten)
    [93e69e4] feature #15076 [Debug] Allow throwing from __toString() with `return trigger_error($e, E_USER_ERROR);` (nicolas-grekas)
    [674b124] feature #14238 [config] added remove option to ignoreExtraKeys (twifty)
    [ffed0ce] feature #15134 [FrameworkBundle] add option to force web server startup (xabbuh)
    [cad16ac] feature #14764 [TwigBundle] Warmup twig templates in non-standard paths (kbond)
    [32cbfd4] feature #15096 [DependencyInjection] Allow anonymous DefinitionDecorator resolving (nicolas-grekas)
    [bfa28d6] feature #15154 [Validator] Added missing error codes and turned codes into UUIDs (webmozart)
    [fc6ed5b] feature #15141 [DX] [Security] Renamed Token#getKey() to getSecret() (WouterJ)
    [86e77eb] feature #15175 [VarDumper] Ingore PHPUnit and Prophecy object when they are nested (lyrixx)
    [02347d5] feature #15139 [Translation] Add parameters to DataCollectorTranslator (damienalexandre)
    [a48c377] feature #15219 [DependencyInjection] Added ParameterBagInterface::remove (lyrixx)
    [0e5eb6b] feature #14264 [WebProfilerBundle] Add link to show profile of latest request (xelaris)
    [b9f45d1] feature #15290 [DependencyInjection] Forbid container cloning (jakzal)
    [86b218e] feature #15131 [Security] Moved Simple{Form,Pre}AuthenticatorInterfaces to Security\Http (WouterJ)
    [4995900] feature #15185 Implement resettable containers (stof)
    [23919ab] feature #15347 [DependencyInjection][3.0] Add initialized to container interface (znerol)
    [7ec1cd4] Reverted the feature to display different toolbar versions
    [251314e] feature #15160 Redesigned the web debug toolbar (javiereguiluz)
    [ce5363a] feature #15372 [FrameworkBundle] Change the default value of cookie_httponly (jderusse)
    [0de8905] feature #15285 [Config] deprecate cannotBeEmpty() for boolean and numeric nodes (xabbuh)
    [f02a5dc] feature #14987 [FrameworkBundle] Configurable Serializer name converter (dunglas)
    [839e925] feature #15123 [2.8][FrameworkBundle] Allow parameter use_cookies in session configuration (derrabus)
    [3c10715] feature #15418 [Debug] Deprecate ExceptionHandler::createResponse (nicolas-grekas)
    [5b38d74] feature #15079 [Form] Deprecated FormTypeInterface::getName() and passing of type instances (webmozart)
    [bffca95] feature #15013 [Security] Removed security-acl from the core (iltar)
    [c73e0a3] feature #15422 [Debug] Remove deprecated ExceptionHandler::createResponse (nicolas-grekas)
    [c856a01] feature #15382 [Console] Use readline for user input when available #DX (michaelperrin)
    [317d30b] feature #13990 [Form] Add flexibility for EntityType (raziel057)
    [64d0507] feature #15433 Allow to define Enum nodes with 1 single element (javiereguiluz)
    [a00687f] feature #15416 [DependencyInjection] Added a way to define the priority of service decoration (dosten)
    [e6d7534] feature #15430 [SecurityBundle] Remove deprecated code (dosten)
    [c8e05e3] feature #15452 [Translator] [Xliff] Add support for target attributes. (marcosdsanchez)
    [c1c5f1d] feature #15555 [VarDumper] Add caster for pgsql resources (nicolas-grekas)
    [19f4ada] fixed tests using deprecation features
    [d4441e9] feature #15551 [Translation] added element metadata to XliffFileDumper (aitboudad)
    [47d001e] feature #15934 Add a non-static API for the CssSelector component (stof)
    [181d470] feature #15919 [Form] Guess currency field based on validator constraint (enumag)
    [8d1cee9] feature #15929 [3.0][Config] Remove ResourceInterface::getResource() which was deprecated in 2.8 (mpdude)
    [5322cbb] feature #15964 Symfony Console Style tweaks (javiereguiluz)
    [d65f864] feature #15972 [Console] Updated the styles of the server commands (javiereguiluz)
    [7bc3ec0] feature #15978 Updated the styles of the cache commands (javiereguiluz)
    [b258949] feature #16007 [HttpFoundation] deprecate finding deep items in request parameters (xabbuh)
    [8f44cc3] feature #15944 Remove profiler storages (javiereguiluz)
    [4d855e2] feature #16011 [FrameworkBundle] Tag deprecated services (nicolas-grekas)
    [ac8fd04] feature #15838 [VarDumper] Dump PHP+Twig code excerpts in backtraces (nicolas-grekas)
    [2f44171] feature #15503 UI & CSS improvement to new toolbar (WouterJ)
    [3b3431e] feature #15938 [Console] Bind input before executing the COMMAND event (WouterJ)
    [aa2e7e4] feature #15899 [3.0][Security] Remove deprecated features (WouterJ)
    [dbb099d] feature #16029 [FrameworkBundle][TwigBridge] do not render empty form action attributes (xabbuh)
    [557e416] feature #16018 [HttpKernel] removed deprecated profiler storages (fabpot)
    [763d478] feature #16019 [HttpFoundation] removed the ParameterBag::get() deep argument (fabpot)
    [437398d] [3.0][Security] Remove deprecated features (follow up of #15899)
    [fc41cf0] [3.0][FrameworkBundle] Removed deprecated features
    [d226d35] feature #15904 [3.0][FrameworkBundle] Removed deprecated features (WouterJ)
    [6dc3cf9] [3.0][DoctrineBridge] Removed deprecated features
    [7bab317] feature #15900 [3.0][DoctrineBridge] Removed deprecated features (WouterJ)
    [925ecaf] [Validator] removed deprecated features in Constraints
    [17cedd3] [Form] removed usage of Validator deprecated features
    [33f3400] [Form] removed deprecated features
    [48d1169] feature #16024 [Validator] removed deprecated features in Validator and Form (fabpot)
    [ffddafc] feature #15196 [HttpKernel] make RequestStack parameter required (Tobion)
    [54e3d71] feature #15778 Fluid interface for building routes in PHP (weaverryan)
    [99745e1] feature #15742 Using a service as a router resource (weaverryan)
    [aa7d4e6] feature #16020 [CssSelector] removed the deprecated CssSelector class (fabpot)
    [4af8a55] feature #16057 Deprecate loading multiple documents in the same crawler (stof)
    [9e60980] feature #16058 Prevent adding non-DOMElement elements in DomCrawler (stof)
    [6413fb7] feature #16063 [VarDumper] Add $this->getDump($var) when using VarDumperTestTrait (nicolas-grekas)
    [584cfc2] feature #16069 [WebProfilerBundle] Move AjaxCollector to HttpKernel for use with Silex (glaubinix, fabpot)
    [5ab9954] feature #16067 [3.0] Remove more deprecated interfaces in Form and Validator (nicolas-grekas)
    [8fdb412] feature #8967 [HttpFoundation] Request->getRequestFormat should only rely on the request attributes (pvandomm
    [7e3c4a6] feature #16035 [3.0][Security] Remove deprecated features (follow up of #15899) (Koc)
    [1e0adf4] feature #14721 [Security] Configuring a user checker per firewall (iltar)
    [d606e76] feature #16075 [3.0] Clean Form, Validator, DowCrawler and some more (nicolas-grekas)
    [478ad54] feature #15613 [DependencyInjection] Add autowiring capabilities (dunglas)
    [3567548] feature #16102 Simplify AbstractVoter (Koc)
    [88e2d70] feature #16076 [HttpFoundation] change precedence of parameters in Request::get (Tobion)
    [40cf393] feature #14908 Include working directory in ProcessFailedException (Rvanlaak)
    [8b15af9] feature #16125 Replace is_callable checks with type hints (mpajunen, nicolas-grekas)
    [21e50d5] feature #14044 [Console] [Helper] [Table] Columns styles (MAXakaWIZARD)
    [f72a7c3] feature #16107 [3.0] Various deprecations cleanups (nicolas-grekas)
    [a1c7af1] feature #16001 [DI] Warn when a definition relies on a deprecated class in ContainerBuilder::createService() (nicolas-
    [141f9eb] feature #15879 Deprecate the SecureRandom class (pierredup)
    [10389e3] feature #16189 [PhpUnitBridge] Add SkippedTestsListener to collect and replay skipped tests (nicolas-grekas)
    [6907498] feature #15025 [2.8] [Form] Rename CollectionType options for entries (WouterJ)
    [b03ccb3] feature #16198 [EventDispatcher] added EventDispatcher::ge

    View Slide

  10. Agenda

    View Slide

  11. Agenda
    Releases / Versions
    1

    View Slide

  12. Agenda
    Releases / Versions
    1
    Most relevant deprecations
    2

    View Slide

  13. Agenda
    Releases / Versions
    1
    Most relevant deprecations
    2
    New features (sexiest)
    3

    View Slide

  14. Agenda
    Releases / Versions
    1
    Most relevant deprecations
    2
    New features (sexiest)
    3
    Migrate your app to Symfony3
    4

    View Slide

  15. Releases / Versions
    1

    View Slide

  16. version 3

    View Slide

  17. View Slide

  18. -Everyone
    « When should I migrate to Symfony3 »

    View Slide

  19. Roadmap - releases
    Know when to
    upgrade

    View Slide

  20. Symfony Development
    • Symfony manages its releases
    through a time-based model.
    • New Symfony versions come
    out every six months, one in
    May, one in November.

    View Slide

  21. Symfony Versions

    View Slide

  22. -Probably you
    « What about the next version on November
    then? »

    View Slide

  23. View Slide

  24. version 2.7
    version 2.8
    version 3.0

    View Slide

  25. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)

    View Slide

  26. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)
    Long Term Support

    (Supported until novembre 2019)

    View Slide

  27. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)
    Long Term Support

    (Supported until novembre 2019)
    More
    features!

    View Slide

  28. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)
    Long Term Support

    (Supported until novembre 2019)
    More
    features!
    Backward
    compatibility assured

    View Slide

  29. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)
    Long Term Support

    (Supported until novembre 2019)
    More
    features!
    Backward
    compatibility assured
    === 2.8 without the
    BC layer

    View Slide

  30. version 2.7
    version 2.8
    version 3.0
    Long Term Support

    (Supported until may 2019)
    Long Term Support

    (Supported until novembre 2019)
    More
    features!
    Backward
    compatibility assured
    === 2.8 without the
    BC layer
    5.5.9+

    View Slide

  31. http://symfony.com/doc/current/contributing/code/bc.html

    View Slide

  32. Some of the deprecations you should be aware of
    2

    View Slide

  33. Some of the deprecations you should be aware of
    2

    View Slide

  34. Deprecated services

    View Slide

  35. Deprecated services
    form.csrf_provider

    View Slide

  36. Deprecated services
    form.csrf_provider

    View Slide

  37. Deprecated services
    form.csrf_provider security.csrf.token_manager

    View Slide

  38. Deprecated services
    form.csrf_provider
    request
    security.csrf.token_manager

    View Slide

  39. Deprecated services
    form.csrf_provider
    request
    security.csrf.token_manager

    View Slide

  40. Deprecated services
    form.csrf_provider
    request request_stack
    security.csrf.token_manager

    View Slide

  41. Deprecated services
    form.csrf_provider
    request
    security.context
    request_stack
    security.csrf.token_manager

    View Slide

  42. Deprecated services
    form.csrf_provider
    request
    security.context
    request_stack
    security.csrf.token_manager

    View Slide

  43. Deprecated services
    form.csrf_provider
    request
    security.context
    security.token_storage
    security.authorization_checker
    request_stack
    security.csrf.token_manager

    View Slide

  44. Remove the concept of scopes
    Scopes:
    • Container: The same instance is used each time you
    ask for it from this container.
    • Prototype: A new instance is created each time you
    ask for the service.
    • Request: This scope is tied to the request, meaning a
    new instance is created for each subrequest and is
    unavailable outside the request (for instance in the
    CLI).
    https://github.com/symfony/symfony/pull/15693

    View Slide

  45. Remove synchronized services
    • Synchronization of the dependencies with the request.
    • But the request service is about to be removed, so no
    need anymore.

    View Slide

  46. Event dispatcher
    • You cannot access the event dispatcher from an event
    anymore.

    View Slide

  47. Forms
    • Form::bind() will be removed

    • use Form::submit() or Form::handleRequest()

    • AbstractType::setDefaultOptions() will be removed

    • use AbstractType::configureOptions()
    • The virtual option disappears.

    View Slide

  48. Validation
    • Optional and Required constraints disappears
    /**
    * @Assert\Collection(
    * fields={
    * "personal_email" = @Assert\Required({@Assert\NotBlank, @Assert\Email}),
    * "alternate_email" = @Assert\Optional(@Assert\Email)
    * }
    * )
    */
    private $data;

    View Slide

  49. VoterInterface & AbstractVoter
    • Deprecated:

    • VoterInterface::supportsAttribute()

    • VoterInterface::supportsClass()
    • Extend:

    • AbstractVoter::getSupportedClasses()
    • AbstractVoter::getSupportedAttributes()
    • and implement the isGranted() method.

    View Slide

  50. Twig templates
    • Removal of the {% render %} tag
    • Removal of the {% include %} tag
    • Removal of the global variable app.security

    View Slide

  51. New Cool Features
    3

    View Slide

  52. New Cool Features
    3

    View Slide

  53. Service autowiring

    View Slide

  54. Use case
    Service A
    dependency 1 dependency 2

    View Slide

  55. Configuration before autowiring
    services:
    serviceA:
    class: MyBundle\MyClass
    arguments: [dependency1, dependency2]
    dependency1:
    class: MyBundle\MyDependencyOneClass
    dependency2:
    class: MyBundle\MyDependencyTwoClass

    View Slide

  56. Configuration with autowiring
    services:
    serviceA:
    class: MyBundle\MyClass
    autowire: true
    Parse the constructor:
    - if there is already a definition of the dependencies, it
    will inject it;
    - otherwise, it registers the dependencies as private
    services.

    View Slide

  57. If the constructor has interfaces as type hint for its
    dependencies?
    • It looks for a service that implements that interface.
    • If several services implement the same interface:
    services:
    dependency1:
    class: MyBundle\MyClass
    autowiring_types: MyInterface

    View Slide

  58. https://dunglas.fr/2015/10/new-in-symfony-2-83-0-
    services-autowiring/

    View Slide

  59. Decoration pritorities

    View Slide

  60. Decoration priority
    services:
    foo:
    class: Foo
    bar:
    class: Bar
    arguments: ['@bar.inner']
    decorates: foo
    public: false
    foobar:
    class: Foobar
    arguments: ['@foobar.inner']
    decorates: foo
    decoration_priority: 1
    public: false
    https://github.com/symfony/symfony/pull/15416
    $this->services['foo'] = new Bar(new Foobar(new Foo)));
    =>

    View Slide

  61. New component: Polyfill

    View Slide

  62. View Slide

  63. What’s that?
    • Backports features found in latest PHP versions
    • Provides compatibility PHP implementations for some
    extensions and functions
    • You should use it when portability across PHP versions
    and extensions is desired

    View Slide

  64. New component: Guard

    View Slide

  65. New component: Guard

    View Slide

  66. View Slide

  67. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the SimplePreAuthenticatorInterface
    1. createToken(Request $request, $providerkey)
    2. supportsToken(TokenInterface $token, $provider)
    3. authenticateToken(TokenInterface $token,
    UserProviderInterface $userProvider)
    step 1 / 3

    View Slide

  68. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the SimplePreAuthenticatorInterface
    1. createToken(Request $request, $providerkey)
    2. supportsToken(TokenInterface $token, $provider)
    3. authenticateToken(TokenInterface $token,
    UserProviderInterface $userProvider)
    Create a token object that contains all
    of the information from the request
    that you need to authenticate the user.
    step 1 / 3

    View Slide

  69. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the SimplePreAuthenticatorInterface
    1. createToken(Request $request, $providerkey)
    2. supportsToken(TokenInterface $token, $provider)
    3. authenticateToken(TokenInterface $token,
    UserProviderInterface $userProvider)
    Create a token object that contains all
    of the information from the request
    that you need to authenticate the user.
    Figure out who should handle the token.

    you just need to make sure that this
    method returns true for a token that has
    been created by createToken().
    step 1 / 3

    View Slide

  70. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the SimplePreAuthenticatorInterface
    1. createToken(Request $request, $providerkey)
    2. supportsToken(TokenInterface $token, $provider)
    3. authenticateToken(TokenInterface $token,
    UserProviderInterface $userProvider)
    Create a token object that contains all
    of the information from the request
    that you need to authenticate the user.
    Call the user provider thanks to the
    info in the token, to get the user and
    complete the token.
    Figure out who should handle the token.

    you just need to make sure that this
    method returns true for a token that has
    been created by createToken().
    step 1 / 3

    View Slide

  71. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the SimplePreAuthenticatorInterface
    1. createToken(Request $request, $providerkey)
    2. supportsToken(TokenInterface $token, $provider)
    3. authenticateToken(TokenInterface $token,
    UserProviderInterface $userProvider)
    Create a token object that contains all
    of the information from the request
    that you need to authenticate the user.
    Call the user provider thanks to the
    info in the token, to get the user and
    complete the token.
    Figure out who should handle the token.

    you just need to make sure that this
    method returns true for a token that has
    been created by createToken().
    step 1 / 3
    And it as has to be a service

    View Slide

  72. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the UserProviderInterface
    1. loadUserByUsername($username)
    2. refreshUser(UserInterface $user)
    3. supportsToken($class)
    step 2 / 3

    View Slide

  73. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the UserProviderInterface
    1. loadUserByUsername($username)
    2. refreshUser(UserInterface $user)
    3. supportsToken($class)
    step 2 / 3
    Gets the user, and return an
    object implement the
    UserInterface.

    View Slide

  74. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the UserProviderInterface
    1. loadUserByUsername($username)
    2. refreshUser(UserInterface $user)
    3. supportsToken($class)
    step 2 / 3
    Gets the user, and return an
    object implement the
    UserInterface.
    Called at every request, should
    return the user updated.

    View Slide

  75. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the UserProviderInterface
    1. loadUserByUsername($username)
    2. refreshUser(UserInterface $user)
    3. supportsToken($class)
    step 2 / 3
    Gets the user, and return an
    object implement the
    UserInterface.
    Called at every request, should
    return the user updated.
    Returns true if the type of the token is
    supported.

    View Slide

  76. Previously we did it thanks to the
    SimplePreAuthenticator
    Implement the UserProviderInterface
    1. loadUserByUsername($username)
    2. refreshUser(UserInterface $user)
    3. supportsToken($class)
    step 2 / 3
    Gets the user, and return an
    object implement the
    UserInterface.
    Called at every request, should
    return the user updated.
    Returns true if the type of the token is
    supported.
    And it as has to be a service

    View Slide

  77. Previously we did it thanks to the
    SimplePreAuthenticator
    Wire everything thanks to the configuration of the
    SecurityBundle
    security:
    firewalls:
    secured_area:
    pattern: ^/admin
    simple_preauth:
    authenticator: name_of_authenticator_service
    provider: my_user_provider
    providers:
    my_user_provider:
    id: name_of_your_user_provider_service
    step 3 / 3

    View Slide

  78. View Slide

  79. View Slide

  80. Now a brand new component

    View Slide

  81. Implement authentication with Guard
    Extends the AbstractGuardAuthenticator
    1. getCredentials(Request $request)
    2. getUser($credentials, UserProviderInterface $userProvider)
    3. checkCredentials($credentials, UserInterface $user)
    4. onAuthenticationSuccess(Request $request, TokenInterface $token,
    $providerKey)
    5. onAuthenticationFailure(Request $request,
    AuthenticationException $e)
    6. start(Request $request, AuthenticationException $exception)
    7. supportsRememberMe()
    step 1 / 2

    View Slide

  82. Implement authentication with Guard
    Extends the AbstractGuardAuthenticator
    1. getCredentials(Request $request)
    2. getUser($credentials, UserProviderInterface $userProvider)
    3. checkCredentials($credentials, UserInterface $user)
    4. onAuthenticationSuccess(Request $request, TokenInterface $token,
    $providerKey)
    5. onAuthenticationFailure(Request $request,
    AuthenticationException $e)
    6. start(Request $request, AuthenticationException $exception)
    7. supportsRememberMe()
    step 1 / 2
    And it as has to be a service

    View Slide

  83. Implement authentication with Guard
    Wire everything thanks to the configuration of the
    SecurityBundle
    security:
    firewalls:
    secured_area:
    authenticators:
    - app.api_token_authenticator
    entry_point: app.form_login_authenticator
    providers:
    database_users:
    entity: { class: AppBundle:User, property: username }
    step 2 / 2

    View Slide

  84. 7 methods to implement

    View Slide

  85. 1. getCredentials(Request $request)
    The getCredentials() method is called on every single
    request and its job is to fetch the API token and return it.

    View Slide

  86. 2. getUser($credentials, UserProviderInterface
    $userProvider)
    Its job is simple: return a the user (an object
    implementing UserInterface).

    View Slide

  87. 3. checkCredentials($credentials, UserInterface
    $user)
    Here, you can do any additional checks for the validity of
    the token - or anything else you can think of.

    View Slide

  88. 4. onAuthenticationSuccess(Request $request,
    TokenInterface $token, $providerKey)
    Your user is authenticated! Amazing! At this point, in an
    API, you usually want to simply let the request continue
    like normal.
    return;

    View Slide

  89. 5. onAuthenticationFailure(Request $request,
    AuthenticationException $e)
    If the getUser() method returns null or throws an
    AuthenticationException, then you’ll end up here.
    return new JsonResponse(
    array('message' => $exception->getMessageKey()),
    403
    );

    View Slide

  90. 7. supportsRememberMe
    This method is required for all authenticators. If true, then
    the authenticator will work together with the
    remember_me functionality on your firewall, if you have it
    configured.

    Obviously, for an API, we don't need remember me
    functionality.

    View Slide

  91. Tutorials by KnpUniversity
    https://knpuniversity.com/screencast/guard

    View Slide

  92. Symfony Profiler looks better!

    View Slide

  93. View Slide

  94. View Slide

  95. View Slide

  96. View Slide

  97. View Slide

  98. New architecture of Symfony full stack

    View Slide

  99. View Slide

  100. console

    View Slide

  101. console

    View Slide

  102. console
    /cache /logs

    View Slide

  103. New component: Property Info

    View Slide

  104. View Slide

  105. What’s that?
    • Each components that needs to introspect in object
    properties have its own logic.
    • This component propose a common API to introspect
    object properties
    • Which component? Serializer / Form / Validator…

    View Slide

  106. New component: LDAP

    View Slide

  107. Before…

    View Slide

  108. View Slide

  109. How to use it?
    security:
    providers:
    ldap_users:
    ldap:
    service: my_ldap
    base_dn: dc=MyDomain,dc=tld
    search_dn: CN=My User,OU=Users,DC=MyDomain,DC=tld
    search_password: p455w0rd
    filter: (sAMAccountName={username})
    default_roles: ROLE_USER
    firewalls:
    api:
    provider: ldap_users
    stateless: true
    pattern: ^/api
    http_basic_ldap:
    service: my_ldap
    dn_string: "{username}@MYDOMAIN"
    demo_secured_area:
    provider: ldap_users
    pattern: ^/
    form_login_ldap:
    service: my_ldap
    dn_string: CN={username},OU=Users,DC=MyDomain,DC=tld
    check_path: login_check
    login_path: login

    View Slide

  110. Migrate my application to Symfony3
    4

    View Slide

  111. How to spot the deprecations in my application?

    View Slide

  112. View Slide

  113. insight.sensiolabs.com

    View Slide

  114. SensioLabs DeprecationDetector
    • Command line tool
    deprecation-detector check
    https://github.com/sensiolabs-de/deprecation-detector

    View Slide

  115. SensioLabs DeprecationDetector
    • Command line tool
    deprecation-detector check
    https://github.com/sensiolabs-de/deprecation-detector

    View Slide

  116. In your tests with PHPUnit
    http://symfony.com/blog/new-in-symfony-2-7-phpunit-bridge
    composer require --dev "symfony/phpunit-bridge"

    View Slide

  117. Symfony 2.8 & 3.0
    are out in November
    2015
    2.8 is an LTS version!

    View Slide

  118. https://speakerdeck.com/freerich/symfony3

    View Slide

  119. Follow him! He’s cute ;)
    @catlannister

    View Slide

  120. http://tinyurl.com/sfcon2015

    View Slide

  121. http://tinyurl.com/sfliveusa

    View Slide

  122. Thank you!
    @saro0h
    speakerdeck.com/saro0h/
    saro0h
    This is a
    zero guys!

    View Slide