Как правильно находить, отслеживать и обрабатывать устаревшие вызовы методов в Symfony?

Я только что обновил проект Symfony 2.7 до 2.8. Сейчас я готовлюсь обновить проект до Symfony 3. Профиль показывает, что большое количество (более 1500) устаревших методов / классов используется для каждого запроса.

Конечно, я хотел бы решить эти вопросы. Однако, насколько я могу судить, устаревший код используется самой Symfony, а не моим собственным кодом.

Вот пример:

ConfigCache::__toString() is deprecated since version 2.7 and will be removed in 3.0. Use the getPath() method instead. (4 times)

ConfigCache::__toString() (called from AllowedMethodsRouterLoader.php at line 51)
AllowedMethodsRouterLoader::getAllowedMethods() (called from AllowedMethodsRouterLoader.php at line 51)
AllowedMethodsRouterLoader::getAllowedMethods() (called from AllowedMethodsListener.php at line 41)
AllowedMethodsListener::onKernelResponse()
call_user_func() (called from WrappedListener.php at line 61)
WrappedListener::__invoke()
call_user_func() (called from EventDispatcher.php at line 184)

...a lot more Twig calls...

Twig_Template::displayWithErrorHandling() (called from Template.php at line 347)
Twig_Template::display() (called from Template.php at line 358)
Twig_Template::render() (called from TwigEngine.php at line 50)
TwigEngine::render() (called from TwigEngine.php at line 72)
TwigEngine::render() (called from TwigEngine.php at line 97)
TwigEngine::renderResponse() (called from Controller.php at line 185)
Controller::render() (called from RegistrationController.php at line 71)

RegistrationController::registerAction()

call_user_func_array() (called from HttpKernel.php at line 144)
HttpKernel::handleRaw() (called from HttpKernel.php at line 64)
HttpKernel::handle() (called from ContainerAwareHttpKernel.php at line 69)
ContainerAwareHttpKernel::handle() (called from Kernel.php at line 185)
Kernel::handle() (called from app_dev.php at line 37)

Конечно, мой собственный код также участвует в этом стеке вызовов: RegistrationController обработал запрос и использовал Twig шаблон для отображения страницы. Однако код, который использует устаревший ConfigCache::__toString() Метод изнутри AllowedMethodsRouterLoader класс, который является частью Symfony.

Что-нибудь может сделать мой код, чтобы избежать этого устаревшего кода?

Я весьма удивлен, что сам код Symfony использует устаревший код. Есть ли способ отфильтровать эти сообщения и получать уведомления только об устаревших в моем собственном коде?

0

Решение

Возможно, вас заинтересует Детектор старения от Sensio Labs (создатель Symfony).

Детектор старения на Github

Я использовал его совсем немного, удалив устаревшие классы / методы в 2.8, готовясь к переходу на 3.0. Был отличным спасителем времени. Настоятельно рекомендуется.

Я также рекомендую Symfony Upgrade Fixer чтобы сэкономить еще больше времени, особенно в отношении классов формы.

1

Другие решения

Он выполняет устаревший код — в кодовой базе Symfony, но вызывается из Twig. Поскольку Twig является первоклассной частью Symfony, но не является формальной частью проекта Symfony, у него есть свои собственные выпуски. Более современная версия Twig, как и другие библиотеки, исключит использование устаревшего кода или, по крайней мере, сделает что-то для улучшения состояния.

Таким образом, большая часть обновления проекта, основанного на платформе Symfony, также обновляет остальные библиотеки, которые также используются. Просто обновление "symfony/symfony" строки в composer.json недостаточно.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector