Seule la première syntaxe est licite, et applique la recherche par ordre de chargement des plugins.
La seconde syntaxe est une erreur et va casser si jamais tu déplace/renomme le dossier de ton plugin. Elle fonctionne (par chance) parce que la racine du SPIP fait partie des dossiers dans lesquels on recherche l’inclusion.
La troisième syntaxe est tout autant une erreur, mais qui ne marche pas.
Si tu fois contourner le mécanisme d’inclusion automatique de SPIP il faut utiliser quelque chose comme
Les constantes de DIR sont déjà absolues (ou relatives à la racine du site), donc tu n’as pas à utiliser include_spip (qui est une fonction interne plus lourde et qui ne soit servir que pour le relative dans le path), plutôt que directement include_once comme l’a indiqué @cerdic .
chemin absolu => utilise include_once directement
chemin relatif ET pouvant être surchargé par un même chemin relatif prioritaire dans le path : utilise include_spip
Pour le cas précité, je viens d’adopter include_once, qui sera effectivement plus performant.
Maintenant, le sujet initial était d’inviter à signaler dans la documentation de la fonction include_spip, qu’un chemin relatif tel que nomDuPlugin/inc/nomDuFichier n’est pas accepté.
Mais ce n’est pas qu’il n’est pas « accepté » par la fonction comme s’il y avait une vérification qui le refusait, c’est juste qu’il n’a aucun sens, sans rapport spécifiquement avec les « nomDuPlugin » : les chemins relatifs attendent tous un chemin relatif à un dossier du path. Et les dossiers du path sont : La notion de chemin - Programmer avec SPIP 4
Il n’y a que le contenu de ces dossiers, et seulement ça, qui peut être mis comme chemin relatif.