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 — Définit un jeu de constantes pour la récupération et la définition en masse
Description
$key
, array $constants
[, bool $case_sensitive = true
] )define() est notoirement lent. Vu que le principal bénéfice d'APC est d'augmenter les performances des applications/scripts, ce mécanisme est fourni pour améliorer le processus de la définition de constantes en masse. Cependant, cette fonction n'effectue aucune opération anticipée.
Pour une solution plus performante, essayez l'extension PECL » hidef.
Note: Pour effacer plusieurs constantes stockées (sans effacer tout le cache), un tableau vide peut être passé en tant que paramètre
constants, ce qui effacera les valeurs stockées.
Liste de paramètres
-
key -
La clé
keycorrespondant au nom du jeu de constantes stockées. Ce paramètrekeyest utilisé pour récupérer les constantes stockées avec la fonction apc_load_constants(). -
constants -
Un tableau associatif de paires constant_name => value. Le constant_name doit suivre les règles de nommage normales des constantes. value doit être évaluée comme une valeur scalaire.
-
case_sensitive -
Le comportement par défaut pour les constantes est d'être déclarées en tenant compte de la casse ; i.e. CONSTANT et Constant représentent des valeurs différentes. Si ce paramètre est évalué à
FALSE, les constantes seront déclarées en tant que symboles insensibles à la casse.
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec apc_define_constants()
<?php
$constants = array(
'UN' => 1,
'DEUX' => 2,
'TROIS' => 3,
);
apc_define_constants('numbers', $constants);
echo UN, DEUX, TROIS;
?>
L'exemple ci-dessus va afficher :
123
Voir aussi
- apc_load_constants() - Charge un jeu de constantes depuis le cache
- define() - Définit une constante
- constant() - Retourne la valeur d'une constante
- Ou la référence sur les constantes 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.
