Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1629 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mettre __FILE__ dans une constante.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mettre __FILE__ dans une constante.

n°1698166
Beral2
Posté le 06-03-2008 à 12:54:16  profilanswer
 

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
mood
Publicité
Posté le 06-03-2008 à 12:54:16  profilanswer
 

n°1698217
skeye
Posté le 06-03-2008 à 13:41:18  profilanswer
 

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 -
n°1698225
Beral2
Posté le 06-03-2008 à 13:51:15  profilanswer
 

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 ?

n°1698228
skeye
Posté le 06-03-2008 à 13:55:57  profilanswer
 

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 -
n°1698229
FlorentG
Unité de Masse
Posté le 06-03-2008 à 13:56:06  profilanswer
 

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

n°1698230
FlorentG
Unité de Masse
Posté le 06-03-2008 à 13:56:49  profilanswer
 

Le memory leak doit être ailleurs

n°1698235
skeye
Posté le 06-03-2008 à 14:03:02  profilanswer
 

(...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 -
n°1698241
Beral2
Posté le 06-03-2008 à 14:12:03  profilanswer
 

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.

n°1698243
skeye
Posté le 06-03-2008 à 14:14:37  profilanswer
 

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 -
n°1698245
skeye
Posté le 06-03-2008 à 14:15:46  profilanswer
 

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 -
mood
Publicité
Posté le 06-03-2008 à 14:15:46  profilanswer
 

n°1703671
grosbin
OR die;
Posté le 17-03-2008 à 20:55:21  profilanswer
 

$_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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mettre __FILE__ dans une constante.

 

Sujets relatifs
Problème pour mettre mon site en ligne....File get contents / Image
Mettre 2 PC en réseaux en CMettre a la bonne échelle un QPixMap à la taille du QPushButton (Qt4)
[Résolu] Unexpected end of fileerreur : failed to open stream: No such file or directory ....
Comment mettre le résultat d'une commande dans une variable DOSopen file en php plante sporadiquement
File de menusComment mettre une variables dans flash
Plus de sujets relatifs à : Mettre __FILE__ dans une constante.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR