PHP中一个类可以实现多少个接口?

bpzcxfmw  于 2023-02-18  发布在  PHP
关注(0)|答案(5)|浏览(160)

我正在寻找一个问题的答案,这个问题并不难,但是我找不到一个类可以实现多少个接口。
这可能吗?

class Class1 implements Interface1, Interface2, Interface3, Interface4 {
   .....
}

在我找到的所有类似的例子中,我发现一个类只能实现两个接口,但是没有任何关于我所寻找的信息。

bpsygsoo

bpsygsoo1#

您可以实现任意多个类,这方面没有限制。

class Class1 implements Interface1, Interface2, Interface3, Interface4, Interface5, Interface6{
   .....
}

这意味着这是对的希望这对你有帮助

3b6akqbq

3b6akqbq2#

是的,一个类可以实现两个以上的接口。
PHP manual
类可以实现多个接口,如果需要的话,用逗号分隔每个接口。

yiytaume

yiytaume3#

我写了一个脚本来证明the answer that the amount is not limited

<?php

$inters_string = '';

$interfaces_to_generate = 9999;

for($i=0; $i <= $interfaces_to_generate; $i++) {
  $cur_inter = 'inter'.$i;
  $inters[] = $cur_inter;
  $inters_string .= sprintf('interface %s {} ', $cur_inter);
}

eval($inters_string); // creates all the interfaces due the eval (executing a string as code)

eval(sprintf('class Bar implements %s {}', implode(',',$inters))); // generates the class that implements all that interfaces which were created before

$quxx = new Bar();

print_r(class_implements($quxx));

您可以修改for循环中的counter变量,使该脚本生成更多的接口以供类“Bar”实现。
它可以轻松地处理多达9999个接口(显然更多),正如您在执行该脚本时从最后一行代码(print_r)的输出中看到的那样。
计算机的内存似乎是接口数量的唯一限制,因为当接口数量太大时,会出现内存耗尽错误

c90pui9n

c90pui9n4#

一个类可以实现的接口数量在逻辑上没有限制。

gjmwrych

gjmwrych5#

可以实现的接口数量没有限制,根据定义,只能extend(继承)一个类。
作为一个实际问题,我会限制您实现的接口的数量,以免您的类变得过于庞大,从而难以使用。

相关问题