Deblan blog

Vim, PHP et les espaces de noms dans Symfony

Travailler avec les espaces de noms est utile mais dans vim, il faut manuellement les insérer. Cependant, il existe un outil qui s’appuie sur ctags pour traiter le problème : vim-php-namespace. Après avec généré le fichiers de tags, vous aurez la possibilité d'ajouter le "use" nécessaire à l'utilisation d'une classe grâce à un bind déclenché sur le nom d'une classe. Si plusieurs espaces de noms correspondent à votre classe, il va vous les proposer et à vous de choisir celui qui convient.

Vim

Il ne reste plus qu'à traiter un problème : ajouter le "namespace" d'une classe qu'on est en train d'éditer. Je n'ai pas chercher de plugin pour le faire et je me suis contenté d'écrire un bout de script shell pour m'en sortir.

#!/bin/sh

FILE=$1

if [ -z "$FILE" ]; then
	echo "namespace \\"
	exit
fi

DIR=$(dirname "$FILE")
NAMESPACE=$(echo /$DIR | sed 's,/[a-z0-9][^/]*/,,g;s,/,\\,g')

echo "namespace $NAMESPACE;"

Il suffira de le déclancher avec un bind (map) du type :

map <F7> :r!/path/to/namespace %<CR>

Il va générer le code php à insérer en s'appuyant sur l'arborescence où apparait le fichier :

$ namespace src/Deblan/Bundle/BlogBundle/Controller/DefaultController.php
namespace Deblan\Bundle\BlogBundle\Controller;

Ajouter un commentaire

Vous pouvez utiliser du markdown.Afficher l'aide.