From 7169f4d3e27b0365123af2dc7244c14fab167b9d Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 19 Mar 2019 16:45:49 +0100 Subject: [PATCH] [Templating] added more deprecation --- .../DependencyInjection/SecurityExtension.php | 5 +++- .../Resources/config/templating_php.xml | 4 +++ .../Templating/Helper/LogoutUrlHelper.php | 4 +++ .../Templating/Helper/SecurityHelper.php | 4 +++ .../TwigBundle/Loader/FilesystemLoader.php | 4 +++ .../DependencyInjection/TwigExtensionTest.php | 3 +++ .../Templating/TemplatingExtension.php | 4 +++ .../Templating/TemplatingRendererEngine.php | 4 +++ src/Symfony/Component/Form/Forms.php | 24 ----------------- src/Symfony/Component/Form/composer.json | 3 +-- .../Fragment/HIncludeFragmentRenderer.php | 4 +++ .../Fragment/HIncludeFragmentRendererTest.php | 27 +++++++++---------- .../Component/HttpKernel/composer.json | 3 ++- 13 files changed, 51 insertions(+), 42 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index a3d41a70a6..4d74daa4d4 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -32,6 +32,7 @@ use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; use Symfony\Component\Security\Core\Encoder\Argon2iPasswordEncoder; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Http\Controller\UserValueResolver; +use Symfony\Component\Templating\PhpEngine; /** * SecurityExtension. @@ -97,7 +98,9 @@ class SecurityExtension extends Extension implements PrependExtensionInterface $loader->load('security.xml'); $loader->load('security_listeners.xml'); $loader->load('security_rememberme.xml'); - $loader->load('templating_php.xml'); + if (class_exists(PhpEngine::class)) { + $loader->load('templating_php.xml'); + } $loader->load('templating_twig.xml'); $loader->load('collectors.xml'); $loader->load('guard.xml'); diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml index b2ce15d1b1..b2bafbc605 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml @@ -10,11 +10,15 @@ + + The "%service_id%" service is deprecated since Symfony 4.3 and will be removed in 5.0. + + The "%service_id%" service is deprecated since Symfony 4.3 and will be removed in 5.0. diff --git a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php index 3051ed38dc..30ef9c2829 100644 --- a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php +++ b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php @@ -11,6 +11,8 @@ namespace Symfony\Bundle\SecurityBundle\Templating\Helper; +@trigger_error('The '.LogoutUrlHelper::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.', E_USER_DEPRECATED); + use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator; use Symfony\Component\Templating\Helper\Helper; @@ -18,6 +20,8 @@ use Symfony\Component\Templating\Helper\Helper; * LogoutUrlHelper provides generator functions for the logout URL. * * @author Jeremy Mikola + * + * @deprecated since version 4.3, to be removed in 5.0; use Twig instead. */ class LogoutUrlHelper extends Helper { diff --git a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/SecurityHelper.php b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/SecurityHelper.php index 337748f41b..f6738bd369 100644 --- a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/SecurityHelper.php +++ b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/SecurityHelper.php @@ -11,6 +11,8 @@ namespace Symfony\Bundle\SecurityBundle\Templating\Helper; +@trigger_error('The '.SecurityHelper::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.', E_USER_DEPRECATED); + use Symfony\Component\Security\Acl\Voter\FieldVote; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Templating\Helper\Helper; @@ -19,6 +21,8 @@ use Symfony\Component\Templating\Helper\Helper; * SecurityHelper provides read-only access to the security checker. * * @author Fabien Potencier + * + * @deprecated since version 4.3, to be removed in 5.0; use Twig instead. */ class SecurityHelper extends Helper { diff --git a/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php b/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php index 0f8b8b2720..1757a5997c 100644 --- a/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php +++ b/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php @@ -11,6 +11,8 @@ namespace Symfony\Bundle\TwigBundle\Loader; +@trigger_error('The '.FilesystemLoader::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig notation for templates instead.', E_USER_DEPRECATED); + use Symfony\Component\Config\FileLocatorInterface; use Symfony\Component\Templating\TemplateNameParserInterface; use Symfony\Component\Templating\TemplateReferenceInterface; @@ -22,6 +24,8 @@ use Twig\Loader\FilesystemLoader as BaseFilesystemLoader; * to work with the Symfony paths and template references. * * @author Fabien Potencier + * + * @deprecated since version 4.3, to be removed in 5.0; use Twig notation for templates instead. */ class FilesystemLoader extends BaseFilesystemLoader { diff --git a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php index 0a227930bd..48077f89aa 100644 --- a/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php +++ b/src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php @@ -280,6 +280,9 @@ class TwigExtensionTest extends TestCase ]; } + /** + * @group legacy + */ public function testRuntimeLoader() { $container = $this->createContainer(); diff --git a/src/Symfony/Component/Form/Extension/Templating/TemplatingExtension.php b/src/Symfony/Component/Form/Extension/Templating/TemplatingExtension.php index 84dcb1eda9..a510752e11 100644 --- a/src/Symfony/Component/Form/Extension/Templating/TemplatingExtension.php +++ b/src/Symfony/Component/Form/Extension/Templating/TemplatingExtension.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Form\Extension\Templating; +@trigger_error('The '.TemplatingExtension::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.', E_USER_DEPRECATED); + use Symfony\Bundle\FrameworkBundle\Templating\Helper\FormHelper; use Symfony\Component\Form\AbstractExtension; use Symfony\Component\Form\FormRenderer; @@ -21,6 +23,8 @@ use Symfony\Component\Templating\PhpEngine; * Integrates the Templating component with the Form library. * * @author Bernhard Schussek + * + * @deprecated since version 4.3, to be removed in 5.0; use Twig instead. */ class TemplatingExtension extends AbstractExtension { diff --git a/src/Symfony/Component/Form/Extension/Templating/TemplatingRendererEngine.php b/src/Symfony/Component/Form/Extension/Templating/TemplatingRendererEngine.php index 4805a66bba..1316e6a165 100644 --- a/src/Symfony/Component/Form/Extension/Templating/TemplatingRendererEngine.php +++ b/src/Symfony/Component/Form/Extension/Templating/TemplatingRendererEngine.php @@ -11,12 +11,16 @@ namespace Symfony\Component\Form\Extension\Templating; +@trigger_error('The '.TemplatingRendererEngine::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.', E_USER_DEPRECATED); + use Symfony\Component\Form\AbstractRendererEngine; use Symfony\Component\Form\FormView; use Symfony\Component\Templating\EngineInterface; /** * @author Bernhard Schussek + * + * @deprecated since version 4.3, to be removed in 5.0; use Twig instead. */ class TemplatingRendererEngine extends AbstractRendererEngine { diff --git a/src/Symfony/Component/Form/Forms.php b/src/Symfony/Component/Form/Forms.php index a67c436fe0..7ea5ca8235 100644 --- a/src/Symfony/Component/Form/Forms.php +++ b/src/Symfony/Component/Form/Forms.php @@ -60,30 +60,6 @@ use Symfony\Component\Form\Extension\Core\CoreExtension; * ->addExtension(new ValidatorExtension($validator)) * ->getFormFactory(); * - * Support for the Templating component is provided by TemplatingExtension. - * This extension needs a PhpEngine object for rendering forms. As second - * argument you should pass the names of the default themes. Here is an - * example for using the default layout with "
" tags: - * - * use Symfony\Component\Form\Extension\Templating\TemplatingExtension; - * - * $formFactory = Forms::createFormFactoryBuilder() - * ->addExtension(new TemplatingExtension($engine, null, [ - * 'FrameworkBundle:Form', - * ])) - * ->getFormFactory(); - * - * The next example shows how to include the "" layout: - * - * use Symfony\Component\Form\Extension\Templating\TemplatingExtension; - * - * $formFactory = Forms::createFormFactoryBuilder() - * ->addExtension(new TemplatingExtension($engine, null, [ - * 'FrameworkBundle:Form', - * 'FrameworkBundle:FormTable', - * ])) - * ->getFormFactory(); - * * @author Bernhard Schussek */ final class Forms diff --git a/src/Symfony/Component/Form/composer.json b/src/Symfony/Component/Form/composer.json index fd39d77edc..bb3d43077e 100644 --- a/src/Symfony/Component/Form/composer.json +++ b/src/Symfony/Component/Form/composer.json @@ -48,8 +48,7 @@ "suggest": { "symfony/validator": "For form validation.", "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/framework-bundle": "For templating with PHP." + "symfony/twig-bridge": "For templating with Twig." }, "autoload": { "psr-4": { "Symfony\\Component\\Form\\": "" }, diff --git a/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php b/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php index 7b8e761922..9a700a9b11 100644 --- a/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php +++ b/src/Symfony/Component/HttpKernel/Fragment/HIncludeFragmentRenderer.php @@ -59,6 +59,10 @@ class HIncludeFragmentRenderer extends RoutableFragmentRenderer throw new \InvalidArgumentException('The hinclude rendering strategy needs an instance of Twig\Environment or Symfony\Component\Templating\EngineInterface'); } + if ($templating instanceof EngineInterface) { + @trigger_error(sprintf('Using a "%s" instance for "%s" is deprecated since version 4.3; use a \Twig\Environment instance instead.', EngineInterface::class, __CLASS__), E_USER_DEPRECATED); + } + $this->templating = $templating; } diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php index 6125d95ff4..f80f5f811a 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php @@ -16,6 +16,8 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Controller\ControllerReference; use Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer; use Symfony\Component\HttpKernel\UriSigner; +use Twig\Environment; +use Twig\Loader\ArrayLoader; class HIncludeFragmentRendererTest extends TestCase { @@ -74,7 +76,17 @@ class HIncludeFragmentRendererTest extends TestCase $this->assertEquals('default', $strategy->render('/foo', Request::create('/'), ['default' => 'default', 'id' => 'bar', 'attributes' => ['p1' => 'v1', 'p2' => 'v2']])->getContent()); } - public function testRenderWithDefaultText() + public function testRenderWithTwigAndDefaultText() + { + $twig = new Environment($loader = new ArrayLoader()); + $strategy = new HIncludeFragmentRenderer($twig); + $this->assertEquals('loading...', $strategy->render('/foo', Request::create('/'), ['default' => 'loading...'])->getContent()); + } + + /** + * @group legacy + */ + public function testRenderWithDefaultTextLegacy() { $engine = $this->getMockBuilder('Symfony\\Component\\Templating\\EngineInterface')->getMock(); $engine->expects($this->once()) @@ -86,17 +98,4 @@ class HIncludeFragmentRendererTest extends TestCase $strategy = new HIncludeFragmentRenderer($engine); $this->assertEquals('default', $strategy->render('/foo', Request::create('/'), ['default' => 'default'])->getContent()); } - - public function testRenderWithEngineAndDefaultText() - { - $engine = $this->getMockBuilder('Symfony\\Component\\Templating\\EngineInterface')->getMock(); - $engine->expects($this->once()) - ->method('exists') - ->with('loading...') - ->willThrowException(new \RuntimeException()); - - // only default - $strategy = new HIncludeFragmentRenderer($engine); - $this->assertEquals('loading...', $strategy->render('/foo', Request::create('/'), ['default' => 'loading...'])->getContent()); - } } diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index 7cae1e7484..998f14f6e6 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -39,7 +39,8 @@ "symfony/templating": "~3.4|~4.0", "symfony/translation": "~4.2", "symfony/var-dumper": "^4.1.1", - "psr/cache": "~1.0" + "psr/cache": "~1.0", + "twig/twig": "^1.34|^2.4" }, "provide": { "psr/log-implementation": "1.0"