]> granicus.if.org Git - php/commitdiff
add get_class_name handler
authorStanislav Malyshev <stas@php.net>
Sun, 12 Jan 2003 13:56:51 +0000 (13:56 +0000)
committerStanislav Malyshev <stas@php.net>
Sun, 12 Jan 2003 13:56:51 +0000 (13:56 +0000)
Zend/zend_object_handlers.c

index c86eac465c420792f9ffd26bf92d7ef628d183b8..5ee582667584c44f36400e204ef8059364603753 100644 (file)
@@ -474,6 +474,24 @@ zend_class_entry *zend_std_object_get_class(zval *object TSRMLS_DC)
        return zobj->ce;
 }
 
+int zend_std_object_get_class_name(zval *object, char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC)
+{
+       zend_object *zobj;
+       zobj = Z_OBJ_P(object);
+
+       if(parent) {
+               if(!zobj->ce->parent) {
+                       return FAILURE;
+               }
+               *class_name = zobj->ce->parent->name;
+               *class_name_len = zobj->ce->parent->name_length;
+       } else {
+               *class_name = zobj->ce->name;
+               *class_name_len = zobj->ce->name_length;
+       }
+       return SUCCESS;
+}
+
 zend_object_handlers std_object_handlers = {
        zend_objects_store_add_ref,              /* add_ref */
        zend_objects_store_del_ref,              /* del_ref */
@@ -493,7 +511,7 @@ zend_object_handlers std_object_handlers = {
        NULL,                                    /* call_method */
        zend_std_get_constructor,                /* get_constructor */
        zend_std_object_get_class,               /* get_class_entry */
-       NULL,                                    /* get_class_name */
+       zend_std_object_get_class_name,          /* get_class_name */
        zend_std_compare_objects                 /* compare_objects */
 };