Twig 3.x obligará a usar namespaces

El motor de plantillas Twig se publicó por primera vez en 2008, un año antes de que PHP 5.3 introdujera los "namespaces" en junio de 2009. Esa es la razón por la que históricamente las clases de Twig no utilizaban namespaces:

namespace App\Twig;
 
class AppExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return [
            new \Twig_SimpleFilter('...', [$this, '...']),
        ];
    }
 
    // ...
}

En 2017, añadimos alias a las clases de Twig para que pudieras usar namespaces al importar esas clases en tu código. Así es como se ve el mismo ejemplo de antes pero usando namespaces:

namespace App\Twig;
 
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
 
class AppExtension extends AbstractExtension
{
    public function getFilters()
    {
        return [
            new TwigFilter('...', [$this, '...']),
        ];
    }
 
    // ...
}

Como las clases con namespaces solo son alias de las clases originales, se pueden usar las dos. Sin embargo, como mantener estas dos formas de trabajar complica el mantenimiento del proyecto, hemos decidido declarar obsoletas las clases de Twig que no tienen namespaces.

Desde la próxima versión de Twig 2.x verás mensajes en tus logs si sigues usando las clases sin namespaces. Y en Twig 3.x, cuyo lanzamiento está previsto para los próximos meses de 2019, ese código ya no funcionará.

Esta funcionalidad fue contribuida por Fabien Potencier en los pull requests #2861, #2862 y #2863.

Fuente: New in Twig: Namespaced Classes

Comentarios

Publicada el

24 de abril de 2019

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.