Trajectoires absolues et relatives
Si je utiliser des chemins absolus, je ne peux pas déplacer l'ensemble du répertoire vers un nouvel emplacement.
Si j'utilise des chemins relatifs, je ne peux pas déplacer des fichiers vers de nouveaux emplacements.
Quelle est la solution ici? Avez-vous mis en place un fichier de configuration qui contient le chemin d'accès racine et à partir de là? Ou avez-vous une règle: ne Jamais déplacer les fichiers?
J'ai vu dans certains des projets que les gens utilisent dirname(FICHIER). Quel est le point de cela, je veux dire, pourquoi ne pas simplement laisser depuis le dirname est relatif quand même (selon l'endroit où le fichier se trouve)?
source d'informationauteur Frank Vilea
Vous devez vous connecter pour publier un commentaire.
vous devez utiliser un fichier de configuration qui sera inclus dans chaque fichier de première ligne, par exemple, votre application ressembler à ceci
root /App /Plugins
à l'intérieur de votre répertoire racine :
app-config.php
maintenant, supposons que vous devez inclure un fichier de plugin, donc
à l'intérieur de votre Plugin dir :
my-plugin.php
maintenant tout en dessous de cette ligne peuvent utiliser
ABSPATH
exemple, voulez-vous de charger une image
maintenant, la chose est plus simple, si votre application est conçue pour charger automatiquement certains fichiers comme
de telle sorte que tout l'intérieur de ce fichier ou n'importe quel autre fichier chargé par le
my-plugin.php
fichier pouvez utiliser leABSPATH
sans inclure à chaque fois que leapp-config.php
fichier.avec cela à l'esprit, vous pouvez avoir tous les courts-main que vous voulez dans la
app-config.php
exempledonc, maintenant que vous avez tous, si vous avez besoin de déplacer un fichier, disons un dossier avant exemple:
root /App /Plugins /Utils
juste inlucde
require_once '../../../app-config.php';
évidemment, je suppose que vous ne modifiez pas les chemins à chaque fois =) de toute façon si vous avez besoin de faire est toujours plus simple de changer un fichier d'inclusion plutôt que sur des centaines.
espère que ce sens pour vous =)
Il est relatif au chemin de l', de toute façon. Le
dirname( __FILE__ )
(ou juste__DIR__
en PHP >= 5.3) est-il de sorte que vous pouvez exécuter le fichier à partir de chaque emplacement. Dans le cas où vous utilisez des chemins relatifs, la valeur "." peut changer. Voir:berry@berry-pc:~% chat so.php
berry@berry-pc:~% php so.php
berry@berry-pc:~% cd foo
berry@berry-pc:~/foo% php ../so.php
Donc, il est relatif, mais il est relatif au répertoire de travail courant, de ne pas le répertoire dans lequel le fichier est situé dans. C'est pourquoi vous aurez envie d'utiliser
__DIR__
pour cela. Et en passant, oui, je n'ai pas de déplacer des fichiers d'un tas. Si je fais bien, je vais devoir mettre à jour à chaque appel à ce fichier, bien que je n'en ai pas besoin, ou d'inclure d'une beaucoup plus, puisque je suis à l'aide d'un Autochargeur.Comme pour les autres fichiers, je fais allusion à l' (comme des fichiers de modèle), j'ai mis manuellement le chemin d'accès, mais une fois. Je puis reportez-vous à
$path . '/filename.php';
de sorte qu'il est plus facile de changer plus tard.Dépend de votre utilisation, de définir une constante contenant chemin de l'application est l'une des communes de la pratique
Ne pas utiliser de variable, car il pourrait se substituer quelque part dans votre application et peut briser votre application
Est encore mieux de les combiner avec un lien symbolique (symbolique de créer des branches)
Ainsi, vous pouvez lien symbolique
/home/test -> /home/20111202000000 tout en gardant la version stable,
/accueil/dernières -> /home/20111201000000
Avec cela, vous n'avez pas à risque de briser votre site de production tout en faisant quelques tests/développement, et, vous pouvez facilement déplacer votre répertoire de développement
Des chemins absolus sont mieux à partir d'un point de vue des performances lors de l'utilisation d'un cache d'opcode ou des lots d'exiger/include (bien que son uniquement visibles lorsque vous commencez à comprendre des centaines de fichiers, comme cela pourrait se produire lors de l'utilisation d'un framework comme Zend/Symfony/etc).
Avec un chemin d'accès relatif du cache d'opcode et php doit travailler sur les fichiers de la fonction realpath à chaque fois avant de pouvoir travailler si il sait déjà sur le fichier et si elle a besoin de le charger à nouveau. PHP gère en interne une table de hachage de fichiers à des emplacements de fichiers qui est très rapide aussi longtemps qu'il n'a pas à faire le calcul ci-dessus à chaque fois.