There was an error while loading. Please reload this page.
1 parent fdc34c3 commit 2bd01a1Copy full SHA for 2bd01a1
3/zend_class.md
@@ -88,8 +88,19 @@ struct _zend_class_entry {
88
} info;
89
}
90
```
91
-> create_object为实例化对象的操作,可以通过扩展自定义这个函数
+create_object为实例化对象的操作,可以通过扩展自定义一个函数来接管实例化对象的操作,没有定义这个函数的话将由默认的`zend_objects_new()`处理,自定义时可以参考这个函数的实现:
92
+```c
93
+//注意:此操作并没有将属性拷贝到zend_object中:由object_properties_init()完成
94
+ZEND_API zend_object *zend_objects_new(zend_class_entry *ce)
95
+{
96
+ zend_object *object = emalloc(sizeof(zend_object) + zend_object_properties_size(ce));
97
98
+ zend_object_std_init(object, ce);
99
+ //设置对象操作的handler
100
+ object->handlers = &std_object_handlers;
101
+ return object;
102
+}
103
+```
104
举个例子具体看下,定义一个User类,它继承了Human类,User类中有一个常量、一个静态属性、两个普通属性:
105
```php
106
//父类
0 commit comments