Si vous êtes encore sur Symfony 3.4 et que vous voulez migrer vers Symfony 4, vous allez probablement tomber sur ce type de message :
User Deprecated: The "sensio_framework_extra.routing.loader.annot_class" service is deprecated since version 5.2
User Deprecated: The "sensio_framework_extra.routing.loader.annot_dir" service is deprecated since version 5.2
User Deprecated: The "sensio_framework_extra.routing.loader.annot_file" service is deprecated since version 5.2.
Cet article va vous aider à supprimer ce code déprécié.
Procédure à suivre
Ces messages apparaissent si vous utilisez les annotations du SensioFrameworkExtraBundle. Par exemple, les annotations @Route ou @Method pour le routing :
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
[...]
class FooController extends Controller
{
/**
* @Route("/index", name="foo_index")
* @Method({"GET"})
*/
public function index(Request $request): Response
{
[...]
}
}
Le code ci-dessus va générer les messages de dépréciations vus en début d'article.
Pour les supprimer, il faut utiliser à la place les annotations du composant routing de Symfony. Après remplacement, on obtient le code ci-dessus :
use Symfony\Component\Routing\Annotation\Route;
[...]
class FooController extends Controller
{
/**
* @Route("/index", name="foo_index", methods={"GET"})
*/
public function index(Request $request): Response
{
[...]
}
}
Cette intervention dans le code PHP ne suffit pas. Il faut savoir que par défaut, les annotations du SensioFrameworkExtraBundle sont activées même si vous ne les utilisez pas.
Il faut donc qu'on les désactive. Cette étape est effectuée automatiquement dans les projets utilisant Flex car la recette existante ajoute la configuration nécessaire.
Pour les vieux projets (notre cas), on doit le faire manuellement. Ouvrez le fichier app/config/config.yml et ajoutez la configuration ci-dessous :
sensio_framework_extra:
router:
annotations: false
Si vous naviguez maintenant dans votre application, les messages de dépréciations devraient avoir totalement disparus.
Version
Cet article a été testé avec :
Symfony : 3.4 vers 4.3
PHP : 7.3