多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 10.3 PHP中的面向对象(一) # 10.3 PHP中的面向对象(一) 定义一个接口还是很方便的,我先给出一个PHP语言中的形式。 ``` <?php interface i_myinterface { public function hello(); } ``` 那它在扩展中的实现是这样的。 ``` zend_class_entry *i_myinterface_ce; static zend_function_entry i_myinterface_method[]={ ZEND_ABSTRACT_ME(i_myinterface, hello, NULL) //注意这里的null指的是arginfo {NULL,NULL,NULL} }; ZEND_MINIT_FUNCTION(test) { zend_class_entry ce; INIT_CLASS_ENTRY(ce, "i_myinterface", i_myinterface_method); i_myinterface_ce = zend_register_internal_interface(&ce TSRMLS_CC); return SUCCESS; } ``` 我们使用ZEND\_ABSTRACT\_ME()宏函数来为这个接口添加函数,它的作用是声明一个类似虚函数的东西,不用实现。也就是说我们不用为其添加ZEND\_METHOD(i\_myinterface,hello){...}的实现。但是这个宏函数只能为我们实现public类型函数的声明,如果有其它特殊需要,需要使用ZEND\_FENTRY()宏函数来实现,因为ZEND\_ABSTRACT\_ME只不过是后者的一种封装。 下面我们在PHP语言中使用这个接口 ``` <?php class sample implements i_myinterface { public $name = "hello world!"; public function hello() { echo $this->name."\n"; } } $obj = new sample(); $obj->hello(); ``` ## links - 10.2 [定义一个类](10.2.html) - 10.4 [继承与实现接口](10.4.html)