Php 如何在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

我刚刚将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::\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之后使用这样的代码会破坏代码。因此,应该检查自己的代码,并删除不推荐使用的代码。但是: