80-定义接口

本文介绍了如何在PHP中定义和实现接口。通过示例代码展示了使用ZEND_ABSTRACT_ME宏来声明接口方法的过程,并提供了在扩展中实现接口的具体步骤。
部署运行你感兴趣的模型镜像

80-定义接口

定义一个接口还是很方便的,我先给出一个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();
?>

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值