2012-01-29 29 views
5

Estoy trabajando en hacer mi propio CMS personalizado en PHP a mano y tengo algunas constantes que he definido. ¿Hay alguna manera fácil de modificar las constantes? Estaba pensando en usar algo como fopen() y luego cambiarlo, pero nunca he usado las funciones del sistema de archivos.¿Cómo cambiar las constantes de PHP?

+11

Es posible que desee volver a consultar la definición del diccionario de "constante". – BoltClock

+2

constantes y fopen? –

+3

¿Por qué necesita cambiar sus constantes? Si no son constantes a través de su código, use las variables – Tom

Respuesta

26

Una constante es un identificador (nombre) para un valor simple. Como indica el nombre , ese valor no puede cambiar durante la ejecución del script (excepto las constantes mágicas, que en realidad no son constantes). Una constante distingue entre mayúsculas y minúsculas por defecto. Por convención, los identificadores constantes siempre son mayúsculas.

El nombre de una constante sigue las mismas reglas que cualquier etiqueta en PHP. Un nombre de constante válida comienza con una letra o guión bajo, seguido de cualquier cantidad de letras, números o guiones bajos. Como expresión regular, que se expresaría así: [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *

de: http://php.net/manual/en/language.constants.php

+8

no puedo decir mejor que la página php.net! – Tech4Wilco

0

Por lo que sé, una vez configurada, una constante no se puede cambiar.

14

No. Son constantes, como en "constant - lo que es permanente o invariable" (Wiktionary). Una vez que están definidos, no hay forma de cambiarlos. Para citar The Fine Manual, sección Constantes:

[el valor de una constante] no puede cambiar durante la ejecución del script.

+0

Lamento haber sido incorrecto ... para mí las constantes son solo un valor que puede usarse a lo largo de un todo el sitio sin tener que seguir definiéndolos. Debería haber sido más claro en lo que estaba tratando de lograr. Estoy creando mi propio CMS para mi propio uso y me preguntaba cómo podría crear una forma de cambiar variables o lo que sea un buen término para ellas sin editar manualmente el archivo/archivos que las contienen. Lo siento. – legobear154

+0

No hay necesidad de disculparse por ser incorrecto, le sucede a todos :) – Piskvor

+0

Ok. ¿Cuál sería la mejor forma de crear un archivo de configuración? Voy a agregar un panel de administración a mi CMS y quiero que las variables sean editables desde allí. – legobear154

15

Las constantes son constantes y, por lo tanto, no pueden modificarse. Si desea cambiar las constantes del servidor como allow_url_fopen, esa es la responsabilidad del host, pregúnteles. Si desea cambiarlos en PHP, utilizar variables

ACTUALIZACIÓN

En caso de que la verdad es lo que dice Corbin y desea modificar de la instalación, que se quiere hacer lo siguiente: 0. Cambia los valores constantes a sg. como %%constant1. 1. lee el código en una variable. 2. Permita que el usuario establezca las variables. 3. Utilice str_replace en todos ellos como str_replace ("%% constant1", $ _ POST ["value1"], $ configfile). 4. Coloque $ configfile como contenido de un archivo.

ACTUALIZACIÓN 2

Para su propio CMS solamente, me sugieren lo siguiente: tienda todas las constantes en un archivo, por lo que tendrá que editar un único archivo. Y tal vez la solución anterior podría funcionar para una edición más fácil, pero IDK si vale la pena el tiempo.

6

No. no puede modificar las constantes

0

constantes significa que el valor es constante, por lo que no puede cambiar las constantes.Si va a cambiar las constantes es necesario utilizar las variables de estado de constantes:

define('ROOT', '/some/path'); 
echo ROOT; // echo's /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; // echo's /some/path 
$root = '/some/other/path'; 
echo $root; // echo's /some/other/path 
0

Creo que quiere decir en el caso de un script de instalación, en la que desea almacenar una variable de entrada a un archivo de configuración, para ser utilizado en su CMS, una vez que se completa la instalación. En ese caso hes no cambia la constante en tiempo de ejecución.

hes probablemente tiene un archivo de la siguiente manera:

define(DB, ''); 
define(USER, ''); 
define(PASS, ''); 
define(HOST, ''); 

y quiere crear un script que pueblan estas constantes con los datos para que pueda ser utilizado en el CMS.

1
in PHP, but only if you have the runkit extension installed. 

However, I must question why you're even defining a constant if you need to change it. It would no longer be a constant once changed and it's appropriate to use constants in your context if it needs to be changed. You may want to consider making it a global variable if it needs to be accessible in other functions or parts of your code, or write proper code by: 
Passing the data as parameters to a function, then returning the manipulated values (if coding in a procedural fashion). 
Set the value in a class' property, then access the value using $this within your class (if coding in an OO fashion). 
Cuestiones relacionadas