定义一个接口还是很方便的,我先给出一个PHP语言中的形式。
4 | public function hello(); |
那它在扩展中的实现是这样的。
01 | zend_class_entry *i_myinterface_ce; |
03 | static zend_function_entry i_myinterface_method[]={ |
04 | ZEND_ABSTRACT_ME(i_myinterface, hello, NULL) |
08 | ZEND_MINIT_FUNCTION(test) |
11 | INIT_CLASS_ENTRY(ce, "i_myinterface" , i_myinterface_method); |
13 | i_myinterface_ce = zend_register_internal_interface(&ce TSRMLS_CC); |
我们使用ZEND_ABSTRACT_ME()宏函数来为这个接口添加函数,它的作用是声明一个类似虚函数的东西,不用实现。也就是说我们不用为其添加ZEND_METHOD(i_myinterface,hello){...}的实现。但是这个宏函数只能为我们实现public类型的函数声明,如果有其它特殊需要,需要使用ZEND_FENTRY()宏函数来实现,因为ZEND_ABSTRACT_ME也不过是后者的一种封装。
下面我们在PHP语言中使用这个接口。
02 | class sample implements i_myinterface |
04 | public $name = "hello world!" ; |
06 | public function hello() |
08 | echo $this ->name. "\n" ; |
没有帐号? 现在注册.