class 可以在 PHP 中实现多少个接口?
How many interfaces can a class implement in PHP?
我正在寻找一个不难的问题的答案,但是我找不到一个可以实现多少个接口class。
这可能吗?
class Class1 implements Interface1, Interface2, Interface3, Interface4 {
.....
}
对于我找到的所有类似示例,我发现一个 class 只能实现 2 个接口。但是没有任何关于我正在寻找的信息。
class 可以实现的接口数量在逻辑上没有限制。
您可以实现的接口数量没有限制。根据定义,您只能 extend
(继承)一个 class.
实际上,我会限制您实现的接口数量,以免您的 class 变得过于庞大而难以使用。
我写了一个脚本来证明上面的说法(数量不限):
<?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 以使该脚本生成更多接口以供 class "Bar".
实现
正如您在执行该脚本时从最后一行代码 (print_r) 的输出中看到的那样,它可以轻松处理多达 9999 个接口(显然更多)。
计算机的内存似乎是接口数量的唯一限制,当数量太高时会出现内存耗尽错误
您可以实施任意多个 class,没有任何限制。
class Class1 implements Interface1, Interface2, Interface3, Interface4, Interface5, Interface6{
.....
}
这意味着这是正确的
希望对你有帮助
是的,一个class可以实现两个以上的接口。
来自 PHP manual:
Classes may implement more than one interface if desired by separating
each interface with a comma.
我正在寻找一个不难的问题的答案,但是我找不到一个可以实现多少个接口class。
这可能吗?
class Class1 implements Interface1, Interface2, Interface3, Interface4 {
.....
}
对于我找到的所有类似示例,我发现一个 class 只能实现 2 个接口。但是没有任何关于我正在寻找的信息。
class 可以实现的接口数量在逻辑上没有限制。
您可以实现的接口数量没有限制。根据定义,您只能 extend
(继承)一个 class.
实际上,我会限制您实现的接口数量,以免您的 class 变得过于庞大而难以使用。
我写了一个脚本来证明上面的说法(数量不限):
<?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 以使该脚本生成更多接口以供 class "Bar".
实现正如您在执行该脚本时从最后一行代码 (print_r) 的输出中看到的那样,它可以轻松处理多达 9999 个接口(显然更多)。
计算机的内存似乎是接口数量的唯一限制,当数量太高时会出现内存耗尽错误
您可以实施任意多个 class,没有任何限制。
class Class1 implements Interface1, Interface2, Interface3, Interface4, Interface5, Interface6{
.....
}
这意味着这是正确的 希望对你有帮助
是的,一个class可以实现两个以上的接口。
来自 PHP manual:
Classes may implement more than one interface if desired by separating each interface with a comma.