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

时间:2015-02-11 13:07:03

标签: php oop interface implements

我正在寻找一个不难的问题的答案,但我无法找出一个班级可以实现多少个接口。

这可能吗?

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

对于我发现的所有类似示例,我发现一个类只能实现2个接口。但是没有关于我正在寻找什么的任何信息。

5 个答案:

答案 0 :(得分:23)

您可以实现的接口数量没有限制。根据定义,您只能extend(继承)一个类。

作为一个实际问题,我会限制你实施的接口数量,以免你的课程变得过于庞大而难以使用。

答案 1 :(得分:5)

是的,单个类可以实现两个以上的接口 来自PHP manual

  

如果需要,可以通过分隔来实现多个接口   每个接口都带有逗号。

答案 2 :(得分:3)

我写了一个脚本来证明上述陈述(数量不受限制):

<?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循环中的计数器var,以使该脚本生成更多接口,由类&#34; Bar&#34;实现。

在执行该脚本时,您可以从最后一个代码行(print_r)的输出中看到,最多可以使用9999个接口(显然更多)。

当数字过高时,计算机的内存似乎是接收量的唯一限制因为你得到内存耗尽错误

答案 3 :(得分:1)

你可以实现你想要的多个课程,但没有限制。

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

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

答案 4 :(得分:0)

一个类可以实现的接口数量在逻辑上是不受限制的。