Esiste un metodo per accedere all'elenco delle funzioni di arresto registrate?elenco delle funzioni di arresto registrate
5
A
risposta
9
È possibile scrivere un'estensione e guardare BG(user_shutdown_function_names)
. Probabilmente è più semplice creare un wrapper per register_shutdown_function
che salva le funzioni di spegnimento su qualche array e lo chiama invece.
(testato)
#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
Oltre a tenere traccia da soli, no. L'elenco dei nomi delle funzioni registrati non è esposto agli script PHP. Se sei aperto ad estendere PHP in sé (questo sarebbe un compito semplice) allora vedi la risposta di Artefacto.
Problemi correlati
- 1. Elenco delle funzioni OpenCV
- 2. Elenco delle funzioni zucchero Rcpp?
- 3. Elenco delle funzioni C deprecate?
- 4. Elenco delle funzioni "magiche" di Scala
- 5. Visualizzazione delle rotte registrate in Laravel
- 6. Elenco delle funzioni Lua in un file
- 7. Arresto selezione elenco?
- 8. elenco di visualizzazione mysql delle funzioni definite dall'utente in phpmyadmin
- 9. Comprensione delle liste negli argomenti delle funzioni
- 10. Elenco delle funzioni JavaScript NON supportate da IE8
- 11. Elenco delle funzioni sulla pagina principale con doxygen
- 12. Notepad ++ Elenco delle funzioni: return class anche se vuoto
- 13. Elenco delle stored procedure/funzioni Command Line Mysql
- 14. Dipendenze delle funzioni nell'albero di selezione delle funzioni in Wix
- 15. Analisi delle opzioni non registrate per i file di configurazione in Boost program_options?
- 16. Elenco delle funzioni php nella parte superiore del file? (o, come saltare rapidamente alle funzioni PHP?)
- 17. conflitti di denominazione delle funzioni
- 18. Errore di calcolo delle funzioni
- 19. Ereditarietà delle funzioni virtuali
- 20. Parallelo * all'interno delle funzioni
- 21. Comportamento incoerente delle funzioni
- 22. Python - elenco di funzioni/argomento tuple
- 23. Un elenco di funzioni "globali" scala?
- 24. Sikuli Elenco di funzioni e operatori
- 25. Sfinge: elenco di funzioni in un modulo
- 26. Elenco delle eccezioni di Doctrine2
- 27. Qual è la complessità di runtime delle funzioni di elenco Python?
- 28. Conseguenza delle prestazioni delle funzioni membro volatile
- 29. Funzionalità delle funzioni di libreria di Mathematica
- 30. Google Analytics API - senza origine registrate
wow, che una risposta approfondita. il più delle volte PHP ha già una funzione a livello PHP per fare le cose, ma in questo caso no, eppure hai ancora trovato una soluzione! –