Php 如何在Symfony中正确查找、监视和处理不推荐的方法调用?
我刚刚将Symfony 2.7项目更新为2.8。现在我准备将项目更新为Symfony 3。概要文件显示,在每个请求中使用了大量(超过1500个)不推荐的方法/类 我当然想解决这些问题。然而,据我所知,不推荐使用的代码是Symfony自己使用的,而不是我自己的代码 以下是一个例子:Php 如何在Symfony中正确查找、监视和处理不推荐的方法调用?,php,symfony,deprecation-warning,Php,Symfony,Deprecation Warning,我刚刚将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() metho
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::\uu-toString()
方法的代码来自AllowedMethodsRouterLoader
类,它是Symfony的一部分
我的代码可以做些什么来避免这种不推荐的代码?
我很惊讶,Symfony代码本身使用了不推荐使用的代码。有没有办法过滤掉这些消息,只在我自己的代码中收到不推荐使用的通知?它正在运行不推荐使用的代码-在Symfony代码库中,但它是从Twig调用的。由于Twig是Symfony的一流部分,但不是Symfony项目的正式部分,因此它有自己的版本。Twig的最新版本以及其他库将不再使用不推荐使用的代码,或者至少为改善状态做了一些事情
因此,更新一个基于Symfony框架的项目的很大一部分,也是在更新其他正在使用的库。仅更新composer.json中的
“symfony/symfony”
行是不够的。它正在symfony代码库中运行不推荐的代码,但它是从Twig调用的。由于Twig是Symfony的一流部分,但不是Symfony项目的正式部分,因此它有自己的版本。Twig的最新版本以及其他库将不再使用不推荐使用的代码,或者至少为改善状态做了一些事情
因此,更新一个基于Symfony框架的项目的很大一部分,也是在更新其他正在使用的库。仅更新composer.json中的
“symfony/symfony”
行是不够的。您可能对Sensio Labs(symfony的创建者)的弃用检测器感兴趣
我在2.8版中删除了不推荐的类/方法,并准备迁移到3.0版。这是一个节省时间的好办法。强烈推荐
我还建议您节省更多的时间,尤其是在表单类方面。您可能对Sensio Labs(Symfony的创建者)提供的弃用检测器感兴趣 我在2.8版中删除了不推荐的类/方法,并准备迁移到3.0版。这是一个节省时间的好办法。强烈推荐
我还建议节省更多的时间,尤其是在表单类方面。这只是意味着Sensio Labs在2.8代码中将某些代码标记为不推荐用于版本3。这是正常的,有这些通知和实际勤勉的一部分,以标记他们。在进行3.x升级之前,它可以让您知道预期的结果。symfony core中标记为已弃用的任何代码都将针对版本3进行更新,因此您无需担心这些问题。
已弃用的
通知意味着某段代码仍然可以使用,但不应该使用,因为它将在下一版本中删除。在更新到版本3之后使用这样的代码会破坏代码。因此,应该检查自己的代码,并删除不推荐使用的代码。但是:不是我的代码使用了不推荐的部分,而是Symfony代码本身。我必须为此做些什么吗?不,你不需要。我很清楚贬低的意思。但是谢谢你的解释。基本上在转换到Symfony3之前修改代码。他们将更新他们的核心。这是他们让你知道发生了什么的方式。这样想吧。。。。在构建版本3时,他们会将2.8中的任何代码标记为“已弃用”,这样,当人们使用2.8时,他们就可以知道当他们移动到版本3时会发生什么样的变化。这是完全正常的。不要编辑核心代码。这样想。早在Sensio编写2.8版时,他们就创建了方法SomClass::old()
。现在它还没有被弃用&人们正在使用它。现在他们正在起草第3版,在这个核心中,他们做了改进,并使用了SomClass:new()
。目前,SomClass::old()
已被弃用。。。标记为在将来的版本中删除。您不必返回并在2.8中更新它。您将在3中发布修改。他们没有使用不推荐使用的代码,而是在改进代码,有些代码自然会变得不推荐使用。这是软件的正常生命周期。他们从未使用不推荐的代码编写过symfony版本。随着版本的老化和新版本的出现,旧版本的代码自然会被弃用。2.8于2015年11月发布。就在这一点上,它大约有一岁了。当然,在开发未来版本时,会有一些代码被标记为不推荐使用。这只是意味着Sensio实验室在2.8代码中将某些代码标记为不推荐使用的版本3。这是正常的,有这些通知和实际勤勉的一部分,以标记他们。在进行3.x升级之前,它可以让您知道预期的结果。symfony core中标记为已弃用的任何代码都将针对版本3进行更新,因此您无需担心这些问题。已弃用的
通知意味着某段代码仍然可以使用,但不应该使用,因为它将在下一版本中删除。在更新到版本3之后使用这样的代码会破坏代码。因此,应该检查自己的代码,并删除不推荐使用的代码。但是: