前面我们介绍了类的基本组成以及用户自定义类的编译,除了在PHP代码中可以定义一个类,我们也可以在内核或扩展中定义一个类(与定义内部函数类似),这种类称之为 内部类。
相比于用户自定义类的编译实现,内部类的定义比较简单,也更加灵活,可以进行一些个性化的处理,比如我们可以定义创建对象的钩子函数:create_object,从而在对象实例化时调用我们自己定义的函数完成,这样我们就可以进行很多其它的操作。
内部类的定义简单的概括就是创建一个zend_class_entry结构,然后插入到EG(class_table)中,涉及的操作主要有:
实际这些与用户自定义类的实现相同,只是内部类直接调用相关API完成这些操作,具体的API接口本节不再介绍,我们将在后面介绍扩展开发一章中再系统说明。