Mettre __FILE__ dans une constante.

Mettre __FILE__ dans une constante. - PHP - Programmation

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
Reply

Marsh Posté le 06-03-2008 à 12:54:16   

Reply

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.[:dawa]


---------------
Can't buy what I want because it's free -
Reply

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 ?

Reply

Marsh Posté le 06-03-2008 à 13:55:57    

Beral2 a écrit :

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 ?


Ben...oui. avec define().
Je viens de tester ça:
 
main.php :

Code :
  1. <?php
  2.  
  3. include("include.php" );
  4.  
  5. define('MAIN_FILE', __FILE__);
  6.  
  7. echo MAIN_FILE, INCLUDE_FILE;
  8.  
  9. ?>


 
include.php
 

Code :
  1. <?php
  2. define('INCLUDE_FILE', __FILE__);
  3. ?>


 
 
ça fonctionne très bien :

Citation :


/[...]/Test/main.php/[...]/Test/include.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-03-2008 à 13:56:06    

__FILE__ est une constante "contextuelle" en fait. Mais on ne peut pas la modifier interactivement

Reply

Marsh Posté le 06-03-2008 à 13:56:49    

Le memory leak doit être ailleurs

Reply

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.)


---------------
Can't buy what I want because it's free -
Reply

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.

Reply

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.
 
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).


 
Avec seulement ça dans le fichier? [:heink]


---------------
Can't buy what I want because it's free -
Reply

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.
 
PS : au fait, qd on déclare une constante, on doit l'encadrer avec des guillemets ou des apostrophes (les 2 marchent) ?


la fonction define prend en premier paramètre une chaine de caractères.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-03-2008 à 14:15:46   

Reply

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à :]


Message édité par grosbin le 17-03-2008 à 20:55:40

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed