summaryrefslogtreecommitdiff
path: root/ext/spl/spl_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/spl_functions.c')
-rwxr-xr-xext/spl/spl_functions.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c
index 126a6f15e3..415901d908 100755
--- a/ext/spl/spl_functions.c
+++ b/ext/spl/spl_functions.c
@@ -24,7 +24,6 @@
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_spl.h"
-#include "spl_foreach.h"
/* {{{ spl_destroy_class */
void spl_destroy_class(zend_class_entry ** ppce)
@@ -62,17 +61,24 @@ void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void *
}
/* }}} */
-/* {{{ spl_register_parent_ce */
-void spl_register_parent_ce(zend_class_entry * class_entry, zend_class_entry * parent_class TSRMLS_DC)
+/* {{{ spl_register_sub_class */
+void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, void *obj_ctor, function_entry * function_list TSRMLS_DC)
{
- class_entry->parent = parent_class;
+ zend_class_entry ce;
+
+ INIT_CLASS_ENTRY(ce, class_name, function_list);
+ ce.name_length = strlen(class_name);
+ *ppce = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC);
+
+ /* entries changed by initialize */
+ (*ppce)->create_object = obj_ctor;
}
/* }}} */
-/* {{{ spl_register_implement */
-void spl_register_implement(zend_class_entry * class_entry, zend_class_entry * interface_entry TSRMLS_DC)
+/* {{{ spl_register_parent_ce */
+void spl_register_parent_ce(zend_class_entry * class_entry, zend_class_entry * parent_class TSRMLS_DC)
{
- zend_class_implements(class_entry TSRMLS_CC, 1, interface_entry);
+ class_entry->parent = parent_class;
}
/* }}} */