Skip to content

Commit 2bd01a1

Browse files
committed
update
1 parent fdc34c3 commit 2bd01a1

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

3/zend_class.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,19 @@ struct _zend_class_entry {
8888
} info;
8989
}
9090
```
91-
> create_object为实例化对象的操作,可以通过扩展自定义这个函数
91+
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));
9297

98+
zend_object_std_init(object, ce);
99+
//设置对象操作的handler
100+
object->handlers = &std_object_handlers;
101+
return object;
102+
}
103+
```
93104
举个例子具体看下,定义一个User类,它继承了Human类,User类中有一个常量、一个静态属性、两个普通属性:
94105
```php
95106
//父类

0 commit comments

Comments
 (0)