gpt4 book ai didi

php获取接口(interface)方法

转载 作者:行者123 更新时间:2023-12-02 07:34:56 26 4
gpt4 key购买 nike

是否可以获取已实现接口(interface)的方法?

例如,只返回接口(interface)中的函数 bar()。

interface iFoo  
{
public function bar();
}

class Foo implements iFoo
{
public function bar()
{
...
}

public function fooBar()
{
...
}
}


我知道我可以使用 class_implements 来返回实现的接口(interface),例如

print_r(class_implements('Foo'));

output:
Array ( [iFoo] => iFoo )

如何获取已实现接口(interface)的方法?

最佳答案

根据定义,实现接口(interface)意味着您必须在子类中定义ALL 方法,因此您要查找的是接口(interface)中的ALL 方法( s).

单一界面:

$interface = class_implements('Foo');
$methods_implemented = get_class_methods(array_shift($interface));
var_dump($methods_implemented);

输出:

array (size=1)
0 => string 'bar' (length=3)

多接口(interface):

$interfaces = class_implements('Foo');

$methods_implemented = array();
foreach($interfaces as $interface) {
$methods_implemented = array_merge($methods_implemented, get_class_methods($interface));
}
var_dump($methods_implemented);

输出:

array (size=2)
0 => string 'bar' (length=3)
1 => string 'ubar' (length=4)

为您的示例添加了接口(interface) uFoo:

interface uFoo {
public function ubar();
}

interface iFoo
{
public function bar();
}

class Foo implements iFoo, uFoo
{
public function bar()
{
}

public function fooBar()
{
}
public function ubar(){}
}

关于php获取接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com