Mettre __FILE__ dans une constante. - PHP - Programmation
Marsh Posté le 06-03-2008 à 13:41:18
Beral2 a écrit : __FILE__ étant une constante modifiable (?!?) |
Tu es prié d'arrêter de fumer la moquette tout de suite. Merci.
Marsh Posté le 06-03-2008 à 13:51:15
Ben j'ai lu la doc :
"Une constante est un identifiant (un nom) qui représente une valeur simple. Comme son nom le suggère, cette valeur ne peut jamais être modifiée durant l'exécution du script (les constantes magiques __FILE__ et __LINE__ sont les seules exceptions)"
(__FILE__) n'aura pas la même valeur dans le fichier appelant et dans un fichier appelé. J'aimerais donc pouvoir stocker cette "constante" dans une "vraie" constante.
Y'a moyen ou pas ?
Marsh Posté le 06-03-2008 à 13:55:57
Beral2 a écrit : Ben j'ai lu la doc : |
Ben...oui. avec define().
Je viens de tester ça:
main.php :
Code :
|
include.php
Code :
|
ça fonctionne très bien :
Citation : |
Marsh Posté le 06-03-2008 à 13:56:06
__FILE__ est une constante "contextuelle" en fait. Mais on ne peut pas la modifier interactivement
Marsh Posté le 06-03-2008 à 14:03:02
(...et au passage la doc FR est mal formulée, la doc en anglais ne sous-entend nulle part que les constantes magiques sont modifiables.)
Marsh Posté le 06-03-2008 à 14:12:03
define('MAIN_FILE', __FILE__); c'est ce que j'ai essayé en premier.
Chez moi, simplement ça
define('CHEMIN_FICHIER', __FILE__);
echo CHEMIN_FICHIER;
me fait exploser la RAM et ça mouline sans rien donner (le echo ne renvoie rien). Et ça doit venir de cet essai parce que je n'avais aucun problème avant, et si je l'enlève tout retombe sur ses pattes.
Par contre, avec une variable, aucun problème :
$chemin_fichier = (__FILE__);
define('RACINE_FICHIER', $_SERVER['DOCUMENT_ROOT']); ne me pose aucun problème non plus.
PS : au fait, qd on déclare une constante, on doit l'encadrer avec des guillemets ou des apostrophes (les 2 marchent) ?
Sinks.
Marsh Posté le 06-03-2008 à 14:14:37
Beral2 a écrit : define('MAIN_FILE', __FILE__); c'est ce que j'ai essayé en premier. |
Avec seulement ça dans le fichier?
Marsh Posté le 06-03-2008 à 14:15:46
Beral2 a écrit : define('RACINE_FICHIER', $_SERVER['DOCUMENT_ROOT']); ne me pose aucun problème non plus. |
la fonction define prend en premier paramètre une chaine de caractères.
Marsh Posté le 17-03-2008 à 20:55:21
$_SERVER[document_root] ne change pas en principe, du moins je l'ai jamais fait varier celle là :]
Marsh Posté le 06-03-2008 à 12:54:16
Bonjour,
__FILE__ étant une constante modifiable (?!?), est-il possible de la mettre dans une constante "normale" ?
Dans une variable pas de problème, mais dans une constante ... j'ai essayé avec constant(), rien de bon.
Sans parler de define ('CHEMIN_FICHIER', __FILE__); qui me fait exploser Apache (son occupation en RAM augmente indéfiniment et plutôt rapidement, de l'ordre de 400 Mo par seconde !).
Merci.
---------------
Portfolio