Я только что обновил проект 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 использует устаревший код. Есть ли способ отфильтровать эти сообщения и получать уведомления только об устаревших в моем собственном коде?
Возможно, вас заинтересует Детектор старения от Sensio Labs (создатель Symfony).
Я использовал его совсем немного, удалив устаревшие классы / методы в 2.8, готовясь к переходу на 3.0. Был отличным спасителем времени. Настоятельно рекомендуется.
Я также рекомендую Symfony Upgrade Fixer чтобы сэкономить еще больше времени, особенно в отношении классов формы.
Он выполняет устаревший код — в кодовой базе Symfony, но вызывается из Twig. Поскольку Twig является первоклассной частью Symfony, но не является формальной частью проекта Symfony, у него есть свои собственные выпуски. Более современная версия Twig, как и другие библиотеки, исключит использование устаревшего кода или, по крайней мере, сделает что-то для улучшения состояния.
Таким образом, большая часть обновления проекта, основанного на платформе Symfony, также обновляет остальные библиотеки, которые также используются. Просто обновление "symfony/symfony"
строки в composer.json недостаточно.