Existe-t-il une méthode pour accéder à la liste des fonctions d'arrêt enregistrées?liste des fonctions d'arrêt enregistrées
5
A
Répondre
9
Vous pouvez écrire une extension et regarder BG(user_shutdown_function_names)
. Probablement plus facile est de faire un wrapper pour register_shutdown_function
qui enregistre les fonctions d'arrêt à un tableau et l'appeler à la place.
(non testé)
#include "ext/standard/basic_functions.h"
//usual include suspects here
typedef struct _php_shutdown_function_entry {
zval **arguments;
int arg_count;
} php_shutdown_function_entry;
static void _shutdown_function_dtor(php_shutdown_function_entry *shutdown_function_entry) /* {{{ */
{
int i;
for (i = 0; i < shutdown_function_entry->arg_count; i++) {
zval_ptr_dtor(&shutdown_function_entry->arguments[i]);
}
efree(shutdown_function_entry->arguments);
}
static int _build_shutdown_array(php_shutdown_function_entry *entry, zval *arr TSRMLS_DC)
{
zval *inner;
zval *args;
int i;
array_init(inner);
array_init(args);
Z_ADDREF_P(entry->arguments[0]);
add_assoc_zval(inner, "callback", entry->arguments[0]);
for (i = 1; i < entry->arg_count; i++) {
Z_ADDREF_P(entry->arguments[i]);
add_next_index_zval(args, entry->arguments[i]);
}
add_assoc_zval(inner, "arguments", args);
add_next_index_zval(arr, inner);
}
PHP_FUNCTION(list_shutdown_functions)
{
if (zend_parse_parameters_none() == FAILURE)
return;
if (!BG(user_shutdown_function_names)) {
ALLOC_HASHTABLE(BG(user_shutdown_function_names));
zend_hash_init(BG(user_shutdown_function_names), 0, NULL,
(void (*)(void *)) _shutdown_function_dtor, 0);
}
array_init(return_value);
zend_hash_apply_with_argument(BG(user_shutdown_function_names),
(apply_func_arg_t) _build_shutdown_array, return_value TSRMLS_CC);
}
2
En plus de vous suivre, non. La liste des noms de fonctions enregistrés n'est pas exposée à vos scripts PHP. Si vous êtes ouvert à étendre PHP lui-même (ce serait une tâche simple), alors voir la réponse d'Artefacto.
Questions connexes
- 1. F # Liste des fonctions
- 2. Liste des fonctions C++
- 3. Sikuli Liste des fonctions et des opérateurs
- 4. La composition des fonctions dans une liste de fonctions!
- 5. Coût des fonctions de liste en Python
- 6. Liste des fonctions exportées d'une DLL
- 7. Liste des fonctions «magiques» de Scala
- 8. la liste des fonctions pointeur membres
- 9. Liste des fonctions de fichier php
- 10. liste PHP SOAP WSDL des fonctions
- 11. données enregistrées avec des onglets jQuery ajaxoptions
- 12. données exif non enregistrées
- 13. Liste des procédures/fonctions stockées Ligne de commande Mysql
- 14. Comment obtenir une liste des fonctions non interactives d'Emacs Lisp?
- 15. Liste des alternatives pour les fonctions manquantes dans OpenGLES
- 16. LALR (1) liste vide des paramètres pour les fonctions
- 17. Liste des fonctions globales définies par l'utilisateur en JavaScript?
- 18. appliquer d'abord une liste des fonctions dans Clojure
- 19. Quelle est la complexité d'exécution des fonctions de liste Python?
- 20. Préférences non enregistrées dans DialogPreference
- 21. Notepad ++ Liste des fonctions plug-in: règles d'analyse syntaxique Javascript pour soutenir les fonctions imbriquées
- 22. Réduire la liste des fonctions à ajouter à une file d'attente de fonctions
- 23. des fonctions
- 24. Demander des données enregistrées dans le programme iPhone
- 25. Création d'une liste de fonctions en python
- 26. fonctions php, faire déroulant travail de liste
- 27. Pourquoi le débogage de Joomla montre-t-il 446 requêtes enregistrées et 446 requêtes héritées enregistrées?
- 28. Erreurs Ajax enregistrées deux fois par ELMAH
- 29. L'assistant fonctionne comme des fonctions statiques ou des fonctions procédurales?
- 30. des pointeurs vers des fonctions
wow, quelle réponse en profondeur. la plupart du temps, PHP a déjà une fonction au niveau PHP pour faire les choses, mais dans ce cas, ce n'est pas le cas, et pourtant vous avez toujours trouvé une solution! –