It doesn't introduce much overhead if you make use of conditional function definitions:
<?php
if (function_exists('apc_load_constants')) {
function define_array($key, $arr, $case_sensitive = true)
{
if (!apc_load_constants($key, $case_sensitive)) {
apc_define_constants($key, $arr, $case_sensitive);
}
}
} else {
function define_array($key, $arr, $case_sensitive = true)
{
foreach ($arr as $name => $value)
define($name, $value, $case_sensitive);
}
}
//in your code you just write something like this:
define_array('NUMBERS', Array('ONE' => 1, 'TWO' => 2, 'THREE' => 3));
?>
apc_define_constants
(PECL apc >= 3.0.0)
apc_define_constants — Define un conjunto de constantes para recuperación y definición en masa
Descripción
define() es notoriamente lenta. Ya que el principal beneficio de APC es aumentar el rendimiento de scripts/aplicaciones, se proporciona este mecanismo para hacer más eficiente el proceso de definición de constantes en masa. Sin embargo, esta función no lo realiza tan bien como se esperaba.
Para una solución de rendimiento mejor, pruebe la extensión » hidef de PECL.
Note: Para eliminar un conjunto de constantes almacenadas (sin limpiar la caché por completo), se puede pasar un array vacío al parámetro constants, limpiando de manera eficaz los valores almacenados.
Parámetros
- key
-
key sirve como el nombre del conjunto de constantes que va a ser almacenado. key se usa para recuperar las constantes almacenadas en apc_load_constants().
- constants
-
Un array asociativo de pares nombre_constante => valor. nombre_constante debe seguir las reglas normales de nominación de constantes. valor debe evaluar un valor escalar.
- case_sensitive
-
El comportamiento predeterminado para las constantes es ser declaradas sensibles a mayúsculas-minúsculas; es decir, CONSTANTE y Constante representan valores diferentes. Si este parámetro es FALSE las constantes serán declaradas como símbolos insensibles a mayúsculas-minúsculas.
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplos
Example #1 Ejemplo de apc_define_constants()
<?php
$constantes = array(
'UNO' => 1,
'DOS' => 2,
'TRES' => 3,
);
apc_define_constants('números', $constantes);
echo UNO, DOS, TRES;
?>
El resultado del ejemplo sería:
123
Ver también
- apc_load_constants() - Carga un conjunto de constantes de la caché
- define() - Define una constante nominada
- constant() - Devuelve el valor de una constante
- O la referencia de contantes de PHP
An observation that I've made is that the nature of apc_define_constants() binding the list of constants to a key and then requiring that key to load the constants is limiting. Furthermore, there's no way to append additional constants to a given key.
A solution that I've been adopting is to build a list of constants to be defined, and then do one of two things:
1) if APC is enabled, then use apc_define_constants();
2) ...else loop through the list and define each constant normally.
The problem I've run into is when this process happens at different places in a large application, it can introduce overhead that otherwise wouldn't be there if it was possible to append to an existing list of defined constants in APC.
