6
votes

Comment puis-je changer les constantes de PHP?

Je travaille à faire mon propre CMS personnalisé en PHP à la main et j'ai quelques constantes que j'ai définies. Y a-t-il un moyen facile de modifier les constantes?

Je pensais utiliser quelque chose comme fopen () , puis je n'ai jamais utilisé les fonctions du système de fichiers.


5 commentaires

Vous voudrez peut-être revisiter la définition du dictionnaire de "constante".


Pourquoi avez-vous besoin de changer de constance? S'ils ne sont pas constants de votre code, utilisez des variables


Les constantes sont des constantes - vous ne pouvez pas les modifier. Si, bien sûr, vous parlez de définir ("constante_name", "constante_value"); Sinon, expliquez sur l'exemple, car il semble que vous essayiez de parler de changements de paramètres de configuration de CMS dans son fichier de configuration, réécrivez-le avec le script PHP.


Je sais quelle moyenne constante. Je veux juste savoir s'il y a une façon de les changer, ou quelque chose de similaire. Je ne veux pas devoir continuer à les éditer manuellement à travers le fichier PHP. Je suis désolé de penser à la mauvaise chose.


Peut-être qu'il n'essaie pas de les modifier pendant l'heure actuelle, mais il veut les utiliser comme la configuration de son CMS et qu'il souhaite son script d'installation les modifier ou quelque chose? (Néanmoins pas une bonne solution, je pourrais juste avoir plus de sens de la question.)


8 Réponses :


0
votes

Autant que je sache, une fois défini, une constante ne peut pas être changée.


1 commentaires

Cette déclaration doit être qualifiée. Pendant l'exécution? Qu'en est-il d'Eval ()?



14
votes

Non. Ils sont constantes , comme dans " constante - ce qui est permanent ou invariable "(Wiktionnaire). Une fois qu'ils sont définis, il n'y a aucun moyen de les changer. Pour quote Le manuel fin , constantes de section:

La valeur [une constante] ne peut pas changer lors de l'exécution du script.


3 commentaires

Je suis désolé d'être incorrect ... pour moi des constantes ne sont qu'une valeur qui peut être utilisée sur tout un site entier sans avoir à continuer à les définir. J'aurais dû être plus clair ce que j'essayais d'atteindre. Je crée mon propre CMS pour mon propre usage et je me demandais comment je pourrais faire de la création d'un moyen de changer de variables ou tout ce qui leur permettrait d'éditer manuellement les fichiers / fichiers qui les contiennent. Je suis désolé.


Pas besoin de m'excuser d'être incorrect, cela arrive à tout le monde :)


D'accord. Quel serait le meilleur moyen de créer un fichier de configuration? Je vais ajouter un panneau d'administration à mon CMS et je veux que les variables soient modifiables de là.



26
votes

Une constante est un identifiant (nom) pour une valeur simple. comme nom suggère que la valeur ne peut pas changer lors de l'exécution du script (à l'exception des constantes magiques, qui ne sont pas réellement des constantes). UNE constante est sensible à la casse par défaut. Par convention, constante Les identificateurs sont toujours majuscules.

Le nom d'une constante suit les mêmes règles que toute étiquette dans PHP. UNE Nom constant valide commence par une lettre ou un soulignement, suivi de n'importe quel nombre de lettres, de chiffres ou de soulignement. Comme un régulier expression, il serait exprimé ainsi: [A-ZA-Z_ \ X7F- \ XFF] [A-ZA-Z0-9_ \ X7F- \ XFF] *

de: constantes (PHP Mamual )


1 commentaires

Je ne peux pas dire mieux que la page php.net!



15
votes

Les constantes sont des constantes et ne peuvent donc pas être changées. Si vous souhaitez modifier les constantes de serveur tels que allecter_url_fopen , c'est la responsabilité de l'hôte. Demandez-leur.

Si vous souhaitez les modifier en PHP, utilisez des variables.

Si la vérité est ce que CORBIN dit et que vous souhaitez les modifier dans l'installation, vous souhaitez effectuer ce qui suit: 1. Modifiez les valeurs constantes à, par exemple, %% Constant1 . 2. Lisez le code dans une variable. 3. Laissez l'utilisateur définir les variables. 4. Utilisez str_replace sur tous comme str_replace ("%% Constant1", $ _Post ["value1"], $ configfile) . 5. Ajouter $ configfile comme contenu d'un fichier.

Pour votre propre CMS uniquement, je suggère ce qui suit: Stockez tous les constantes dans un fichier, vous devez donc modifier un fichier uniquement. Et peut-être que la solution précédente pourrait fonctionner pour une modification plus facile, mais je ne sais pas si cela vaut la peine.


0 commentaires

6
votes

Non. Vous ne pouvez pas modifier les constantes.


1 commentaires

Cette déclaration doit être qualifiée. Pendant l'exécution? Qu'en est-il d'Eval ()?



0
votes

Une constante signifie que la valeur est constante, vous ne pouvez donc pas changer de constante. Si vous modifiez une constante, vous devez utiliser une variable au lieu d'une constante:

define('ROOT', '/some/path');
echo ROOT; // Echoes /some/path
define('ROOT', '/some/other/path'); // Gives an error
echo ROOT; // Gives /some/path (if there were no error

$root = '/some/path';
echo $root; // Echoes /some/path
$root = '/some/other/path';
echo $root; // Echoes /some/other/path


0 commentaires

1
votes

Je pense que le point O signifie dans le cas d'un script d'installateur, où l'OP souhaite stocker une variable d'entrée dans un fichier de configuration, à utiliser dans le CMS de l'OP, une fois que l'installation est terminée.

Dans ce cas L'OP ne change pas la constante au moment de l'exécution.

L'OP a probablement reçu un fichier comme celui-ci: xxx

et l'OP veut créer un script qui Popule ces constantes avec des données, il peut donc être utilisé dans le CMS.


0 commentaires

1
votes

en PHP, mais uniquement si vous avez l'extension Runkit installée.

Cependant, je dois vous demander pourquoi vous définissez même une constante si vous devez le changer. Il ne serait plus une constante une fois changé et il convient d'utiliser des constantes dans votre contexte si cela doit être modifié. Vous voudrez peut-être envisager de faire une variable globale si elle doit être accessible dans d'autres fonctions ou parties de votre code, ou écrire un code approprié par:

Transmettre les données comme paramètres à une fonction, puis renvoyant les valeurs manipulées (si codez de manière procédurale).

Définissez la valeur dans une propriété de classe, puis accédez à la valeur en $ ceci dans votre classe (si codez dans une mode orientée objet (OO)).


0 commentaires