Page 1 sur 1

signification __FILE__

Posté : 28 déc. 2008, 16:37
par x@v
Bonjour,
j'observe que pas mal de projet utilise cette ligne pour inclure un fichier
require dirname(__FILE__).'/../inc/admin/prepend.php';
A quoi sert dirname(__FILE__) ?

Posté : 28 déc. 2008, 17:40
par Victor BRITO
Un petit tour par le manuel PHP ne fait jamais de mal. ;)

__FILE__ est une constante magique qui retourne le chemin complet du fichier courant, ainsi que son nom. dirname(), appliquée à __FILE__, permet de récupérer le nom du dossier dans lequel le fichier courant se trouve.

En PHP 5.3, tu pourras utiliser la constante magique __DIR__.

Posté : 28 déc. 2008, 18:42
par Ryle
Un p'tit complément par rapport à ce qu'à indiqué victor sur l'intérêt du procédé : pouvoir faire appel à la fonction include() dans un fichier qui est lui même inclu :)

Pour inclure un fichier depuis un fichier inclu, il faut spécifier soit un chemin absolu (à partir de la racine du serveur que l'on ne connait pas toujours) soit donner un chemin relatif à partir du script principal (qui inclue ce fichier), et dont on ne connait pas toujours l'emplacement non plus, surtout quand plusieurs scripts sont susceptibles de pouvoir inclure ton fichier.

__FILE__ fait effectivement référence au fichier courrant, même si celui-ci est inclus dans un autre script (alors qu'un $_SERVER['PHP_SELF'] et compagnie te retournent les infos sur le script principal)

L'idée donc de pouvoir inclure les fichiers nécessaires au fichier inclu, sans avoir à spécifier le chemin par rapport au script principal : on détermine grace à diranme(__FILE__) le chemin global du fichier inclu, et on complète dans le fichier avec un chemin relatif au fichier inclu (donc sans se soucier de qui l'appel) :)

Posté : 31 déc. 2008, 01:25
par Hywan
Hey :),

Et __DIR__ vaudra dirname(__FILE__) en fait, tout bêtement.
__FILE__ et __DIR__ sont très pratiques pour manipuler des chemins sans trop se casser la tête. Si en plus tu ajoutes la modification des chemins d'inclusions (voir set_include_path()), alors là c'est peinard ;-).

Attention à ne pas confondre __FILE__ avec getcwd() !

Posté : 31 déc. 2008, 20:10
par x@v
pour __DIR__ sa sera dans deux, trois mois et la sorite de la release php 5.3.
La syntaxe est plus courte, élégante et forcément plus rapide !

Je peux donc utiliser PHP_SELF sa ne sera pas le chemin absolus !