2009-01-13 24 views
5

Estoy escribiendo una aplicación en PHP que usa MUCHAS variables globales que se usan en todo el script. En este momento, tengo un archivo de configuración que almacena un grupo de variables globales creadas mediante la función define(), pero como voy a tener tantas, ¿sería mejor crear una tabla en la base de datos que solo contenga nombres de variables? y valores, y para acceder a ellos tienen una función que consulta la base de datos, encuentra la variable, devuelve el valor y almacena en caché el valor para uso futuro.La mejor manera de almacenar variables globales

También soy bienvenido a otras ideas para almacenar variables globales.

+0

Si está utilizando tantas variables globales que se siente la necesidad de hacer esta pregunta, hay una buena probabilidad que podrías mejorar tu código mediante refactorización. – EBGreen

+0

¿Qué tipo de datos está almacenando en constantes? Opciones de configuración? Algo me dice que no estás escribiendo código orientado a objetos, lo que a veces está bien, pero hay mucho poder que tener cuando las cosas están en objetos que se relacionan entre sí. El hecho de que estés usando constantes lo confirma. – yaauie

Respuesta

9

La función define() crea constantes, no variables globales. Las variables globales se deben usar con moderación, ya que pueden dañarse accidentalmente (¡o maliciosamente!), Pero las constantes son perfectamente seguras.

Me resulta más fácil tener un archivo llamado 'config.php' que configura todas las constantes, es más rápido y más simple.

+0

Sí, creo que la forma en que lo estoy haciendo ahora está bien, ya que es el método más rápido. –

0

Bueno, esto depende de la estructura de su aplicación. Si en una carga de página determinada solo necesita uno o dos de varios cientos de variables, las pruebas comparativas podrían mostrar que consultar la base de datos podría ser más rápido que incluir un archivo de configuración masivo. Sin embargo, deberá tener cuidado de empantanar su base de datos con demasiadas consultas cada vez que el usuario quiera hacer algo. El almacenamiento en caché puede reducir la sobrecarga agregada por las solicitudes redundantes, pero ese es el alcance de su uso.

Si estas variables son en su mayoría cadenas cortas o indicadores booleanos, creo que su respuesta se basará en gran medida en lo que podrá mantener bien. Un archivo .ini bien estructurado sería más fácil de mantener que una gran base de datos si esas variables rara vez cambian y siempre se cambian a mano. Si estas variables cambian constantemente y nunca a mano, probablemente sea más inteligente simplemente cargar todas las variables en una base de datos.

Personalmente, me he encontrado en ambas situaciones y he utilizado ambos métodos en consecuencia. Si estás realmente indeciso, siempre puedes hacer algunas pruebas comparativas. Mida una carga de página que extraiga información de configuración de la base de datos, luego, cargue una carga de página con un archivo .ini (o un archivo .php lleno de define() s).

(Y pedante hablando, define() crea constantes en el ámbito global, no variables globales.)

Cuestiones relacionadas