2016-09-30 58 views
0

我剛剛更新了一個Symfony 2.7項目到2.8。現在我準備將該項目更新爲Symfony 3.該配置文件顯示,每個請求都使用了大量(超過1500個)不推薦使用的方法/類。如何在Symfony中正確查找,監視和處理不建議使用的方法調用?

當然我想解決這些問題。但據我所知,不贊成使用的代碼是由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實驗室已經在2.8代碼中將某些代碼片段標記爲版本3已棄用。這些通知和實際上勤奮的標記是很正常的。它可以讓你知道在做這個3.x升級之前會發生什麼。任何在symfony核心中被標記爲不推薦使用的代碼都會針對版本3進行更新,因此您不必擔心這些代碼。 –

+0

「不建議使用」的提示意味着,某段代碼*仍可以被使用,但它不應該被使用,因爲它將在下一個版本中被刪除。在版本3更新之後使用這樣的代碼會破壞代碼。因此,應該檢查一些**自己的**代碼並刪除不推薦使用的代碼。但是:它不是我的代碼,它使用不贊成的部分,而是使用Symfony代碼本身。我必須對此做任何事嗎? –

+0

不,你不知道。我很清楚貶值的含義。但謝謝你的解釋。在轉換到Symfony3之前,基本上修改*您的*代碼。他們將更新他們的核心。這是他們讓你知道發生了什麼的方式。以這種方式思考它......當他們構建第3版時,他們正在將2.8中的任何代碼標記爲「已棄用」,這樣當人們使用2.8時,他們會明白變化的方面當他們移動到3。這是完全正常的。不要編輯核心代碼。 –

回答

1

您可能感興趣的Sensio實驗室(Symfony的創建者)的棄用檢測器。

Deprecation Detector on Github

我用了相當多的刪除過時的類/方法在2.8準備轉移到3.0。節省了很多時間。強烈推薦。

我還建議Symfony Upgrade Fixer節省更多時間,特別是關於表單類。

1

它正在運行不推薦使用的代碼 - 在Symfony代碼庫中,但它是從Twig調用的。由於Twig是Symfony的一流部分,但不是Symfony項目的正式部分,因此它具有自己的發行版。更新版本的Twig以及其他庫將刪除已棄用代碼的使用,或者至少改善狀態。

因此,很大一部分更新基於Symfony框架的項目,也正在更新其他正在使用的庫。只需更新composer.json中的"symfony/symfony"行是不夠的。

相關問題