등록 된 종료 기능 목록에 액세스 할 수있는 방법이 있습니까?등록 된 종료 기능 목록
5
A
답변
9
연장을 작성하여 BG(user_shutdown_function_names)
을 볼 수 있습니다. 아마 더 쉬울 수도 있습니다 어떤 배열에 종료 기능을 저장하고 대신 호출 register_shutdown_function
에 대한 래퍼를 만드는 것입니다.
(테스트되지 않은)
#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
자신을 추적하는 것 외에는 없습니다. 등록 된 함수 이름 목록은 PHP 스크립트에 노출되어 있지 않습니다. PHP 자체를 확장 할 수 있다면 (이것은 간단한 작업이 될 것입니다.) Artefacto의 대답을 참조하십시오.
관련 문제
- 1. 등록 된 경로 목록 검색
- 2. 종료 기능 Linux의 경우
- 3. 등록 된 뷰어를 프로그래밍 방식으로 실행하고 종료 될 때까지 기다림
- 4. 안전한 로그인 및 등록 기능
- 5. 등록 된 회원에게만 인증서 (이미지)를 표시하는 데 필요한 기능
- 6. 익명 사용자에게 등록 된 사용자에게 동일한 기능 제공
- 7. 종료 기능을 등록 해제 할 수 있습니까?
- 8. 목록 쿼리 기능
- 9. jpl에서 목록 기능 호출하기
- 10. iOS - iPhone에 등록 된 속성 목록 파일을 수정할 수 있습니까?
- 11. 주어진 이벤트 유형에 등록 된 이벤트 리스너 목록 쿼리
- 12. SQL 목록 기능 정밀도 제거
- 13. 이미 등록 된 SharePoint 이벤트 수신기 등록
- 14. c - 연결된 목록 기능 바꾸기
- 15. js/jQuery - 마우스 위치에 의한 종료 기능
- 16. Objective-C 전달 ... nil 종료 인수 목록
- 17. Alexandria/Silverlight 3 기능 목록?
- 18. 오라클 : 사용자 기능 목록 받기
- 19. C++ 연결된 목록 파괴 기능
- 20. 연결된 목록 밀어 넣기 기능
- 21. Internet Explorer 추가 기능 목록
- 22. 얼랑지도 중첩 된 목록
- 23. WPF에서 등록 된 이벤트에 가장 좋은 방법
- 24. Windows 응용 프로그램의 종료 코드 목록
- 25. 중첩 링크 된 목록 구현 (목록 목록)
- 26. BrowserBack에서 호출 된 등록 된 경고 스크립트
- 27. ObjectFactory에 명명 된 인스턴스 등록
- 28. JQuery에 등록 된 여러 이벤트
- 29. 등록 된 접두사 란 무엇입니까?
- 30. Django threadedcomments - 등록 된 사용자
와우, 무엇에 대한 깊이있는 대답. 대부분의 시간에 PHP는 이미 PHP 수준에서 함수를 사용하여 작업을 수행하지만이 경우에는 그렇지 않습니다. 그러나 아직 해결 방법은 있습니다. –