For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
PHP编程开发语言是我们在入门互联网编程开发行业的时候会去接触和学习的一个编程开发语言,而本文我们就通过案例分析来简单了解一下,PHP编程类的种类基础知识分享。
1)类分为5种
a.常规类:type=0
b.抽象类:type=ZEND_ACC_EXPLICIT_ABSTRACT_CLASS
c.final类:type=ZEND_ACC_FINAL_CLASS
d.没有加abstract关键字的抽象类:type=ZEND_ACC_IMPLICIT_ABSTRACT_CLASS
e.接口:type=ZEND_ACC_INTERFACE
定义类时调用了zend_do_begin_class_declaration和zend_do_end_class_declaration函数。
“begin”函数用来处理类名,类的类别和父类,对传入的类名作一个转化,统一成小写,这也是为什么类名不区分大小的原因。
“end”函数用来处理接口和类的中间代码。这两个函数在Zend/zend_complie.c文件中可以找到其实现。
2)成员变量
成员变量在编译时已经注册到了类的结构中。
调用顺序为:[zend_do_begin_class_declaration]-->[zend_initialize_class_data]-->[zend_hash_init_ex]
常规的成员变量后都会注册到类的default_properties字段。
3)静态变量
类本身的静态变量存放在类结构的default_static_members字段中。
和前面的成员变量一样,在类声明时成员方法也通过调用zend_initialize_class_data方法,初始化了整个方法列表所在的HashTable。
4)成员方法
以HashTable的数据结构存储了多个zend_function结构体,放在function_table字段中。
前面的成员变量一样,在类声明时成员方法也通过调用zend_initialize_class_data方法,初始化了整个方法列表所在的HashTable。
5)静态成员方法
与静态成员变量不同,静态成员方法与成员方法都存储在类结构的function_table字段。
类的静态成员方法可以通过类名直接访问。
6)方法(Function)与函数(Method)的差别
a.编译后“挂载”的位置不同
b.调用方式的实现
7)魔术方法
与普通方法一样,只不过这些类不是存储在类的函数表,而是直接存储在类结构体中。