详解类的静态成员变量(2)
grammar-line: 183
grammar-line: 181
word: static
grammar-line: 186
Z_LVAL((yyval).u.constant)= ZEND_ACC_STATIC;
grammar-line: 182
走了这个函数zend_do_verify_access_types
做了检测,static不能用来限制abstract类的成员变量等
word: valname
grammar-line: 177
grammar-line: 169
word: test
grammar-line: 303
grammar-line: 309
grammar-line: 192
调用了zend_do_declare_property函数
通过CG(active_class_entry)检测,接口不能添加成员变量
变量不能是abstact和final
检查是否进行了重复定义
调用zend_declare_property_ex
通过access_type& ZEND_ACC_STATIC这个判断出来是否为静态变量
如果是静态变量则target_symbol_table= &ce->default_static_members;
如果不是则target_symbol_table= &ce->default_properties;
最后zend_hash_update更新属性字段
6 结论
类的普通变量和成员变量都存储在类结构的属性里面,仅是存储在的目标hash表不同
摘自 xiaoq3406的专栏
相关新闻>>
- 发表评论
-
- 最新评论 更多>>