Новое в Twig: Пространства имен классов

Шаблонный движок Twig был первоначально выпущен в 2008 году, за год до того, как PHP 5.3 представил пространства имен PHP в июне 2009 года. Вот почему исторически классы Twig никогда не использовали пространства имен:

namespace App\Twig;

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

    // ...
}

В 2017 году добавили псевдонимы пространств имен, чтобы вы могли использовать пространства имен для импорта классов Twig, но мы также поддерживали классы без пространств имен, чтобы не нарушать существующие приложения. Вот как выглядит предыдущий пример при использовании пространств имен:

namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class AppExtension extends AbstractExtension
{
    public function getFilters()
    {
        return [
            new TwigFilter('...', [$this, '...']),
        ];
    }

    // ...
}

Поддержание обоих способов работы с классами Twig усложняет его обслуживание, поэтому мы решили, что пришло время переключить все классы Twig на использование пространств имен PHP. Вот почему, начиная со следующей версии 2.x, все классы без пространств имен будут устаревшими и будут удалены в Twig 3.x, выпуск которой ожидается в 2019 году.

Этот шаг подразумевает большое количество изменений кода, поэтому, пожалуйста, протестируйте версию разработки Twig 2.x в своих реальных приложениях и сообщите о любых проблемах, прежде чем мы отметим его следующую стабильную версию в конце следующей недели.