summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 8be56841ac..8562256d9b 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -26,6 +26,16 @@
#include "zend_constants.h"
#include "zend_ini.h"
+/* Class entry pointers */
+zend_class_entry *reflector_ptr;
+zend_class_entry *reflection_exception_ptr;
+zend_class_entry *reflection_ptr;
+zend_class_entry *reflection_function_ptr;
+zend_class_entry *reflection_class_ptr;
+zend_class_entry *reflection_method_ptr;
+zend_class_entry *reflection_property_ptr;
+zend_class_entry *reflection_extension_ptr;
+
/* Method macros */
#define METHOD_NOTSTATIC \
if (!this_ptr) { \
@@ -47,7 +57,7 @@
/* Exception throwing macro */
#define _DO_THROW(msg) \
- zend_throw_exception(msg, 0 TSRMLS_CC); \
+ zend_throw_exception(reflection_exception_ptr, msg, 0 TSRMLS_CC); \
return; \
/* Smart string macros */
@@ -111,15 +121,6 @@ typedef struct {
unsigned int free_ptr:1;
} reflection_object;
-/* Class entry pointers */
-zend_class_entry *reflector_ptr;
-zend_class_entry *reflection_ptr;
-zend_class_entry *reflection_function_ptr;
-zend_class_entry *reflection_class_ptr;
-zend_class_entry *reflection_method_ptr;
-zend_class_entry *reflection_property_ptr;
-zend_class_entry *reflection_extension_ptr;
-
static zend_object_handlers reflection_object_handlers;
static void _default_get_entry(zval *object, char *name, int name_len, zval *return_value TSRMLS_DC)
@@ -2240,6 +2241,9 @@ ZEND_API void zend_register_reflection_api(TSRMLS_D) {
memcpy(&reflection_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ INIT_CLASS_ENTRY(_reflection_entry, "reflection_exception", reflection_functions);
+ reflection_exception_ptr = zend_register_internal_class_ex(&_reflection_entry, zend_exception_get_default(), NULL TSRMLS_CC);
+
INIT_CLASS_ENTRY(_reflection_entry, "reflection", reflection_functions);
reflection_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);