Est-ce que apply_filters / do_action $tag
name a une limite de caractères? Peut-être des problèmes si le nom de la balise est trop long? Je pose cette question parce que je sais que WP transitoires ont une limite de 45 caractères .
Pour votre information, voici le tag dont je parle:
apply_filters( $tag, ....
J'ai toujours pensé que la taille de la mémoire était la limite pour la longueur de la chaîne , mais selon la documentation de PHP :
string can be as large as up to 2GB (2147483647 bytes maximum)
Il existe également la taille de mémoire maximale autorisée (memory_limit
) pour le script PHP, à prendre en compte.
Vous pouvez toujours utiliser l'idée str_repeat
de cette réponse pour la tester:
// Check the hook name size limit:
$long_hook_name = str_repeat( 'x', 1024 * 1024 ); // Adjust the size until you hit the roof!
add_action( $long_hook_name, function(){
echo 'Greetings from the hook with a very long name';
});
do_action( $long_hook_name );
mais seulement tester ceci où c'est sûr (localement?) ;-)
La même chose devrait s'appliquer à la add_filter()
, puisque add_action()
est juste un wrapper:
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
Le $tag
est utilisé comme clé dans un tableau , il est donc converti en chaîne ou en entier. Il n'y a pas de taille maximale pour les chaînes, la mémoire disponible est la seule restriction réelle. La taille d'un entier dépend de la plate-forme:
La taille d'un entier dépend de la plate-forme, bien qu'une valeur maximale d'environ deux milliards soit la valeur habituelle (c'est-à-dire 32 bits signés). Les plates-formes 64 bits ont généralement une valeur maximale d'environ 9E18, à l'exception de Windows, qui est toujours 32 bits. PHP ne supporte pas les entiers non signés. La taille entière peut être déterminée à l'aide de la constante
PHP_INT_SIZE
et la valeur maximale à l'aide de la constantePHP_INT_MAX
depuis PHP 4.4.0 et PHP 5.0.5.
Utilisez des chaînes pour une meilleure lisibilité. N'essayez pas de remplir la mémoire. :)