我正在尋找一個不難解答的問題的答案,但是我找不到一個類可以實現多少個接口。一個類可以在PHP中實現多少個接口?
這可能嗎?
class Class1 implements Interface1, Interface2, Interface3, Interface4 {
.....
}
對於我找到的所有類似的例子,我已經看到,只有一個類可以實現2個接口。但是沒有關於我在找什麼的信息。
我正在尋找一個不難解答的問題的答案,但是我找不到一個類可以實現多少個接口。一個類可以在PHP中實現多少個接口?
這可能嗎?
class Class1 implements Interface1, Interface2, Interface3, Interface4 {
.....
}
對於我找到的所有類似的例子,我已經看到,只有一個類可以實現2個接口。但是沒有關於我在找什麼的信息。
您可以實現的接口數沒有限制。按照定義,你只能有extend
(繼承)一個類。
作爲一個實際問題,我會限制你實現的接口數量,以免你的課程變得過於笨重,因此很難處理。
類可以實現的接口數量不受邏輯限制。
我寫了一個腳本,上面的語句樣張(該金額不限):
<?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));
您可以修改計數器VAR在for循環,使該腳本產生更多接口的實現班級「酒吧」。
它可以很容易地處理多達9999個接口(顯然更多),正如您從執行該腳本時從最後一行代碼行(print_r)的輸出中可以看到的那樣。
計算機的內存似乎是接口的數量,唯一的限制你所得到的內存耗盡錯誤時數過高
感謝偉大的例子和內存實際上不是一個問題。 – 2017-05-16 17:48:22
你可以實現你想要的類,則存在沒有限制。
class Class1 implements Interface1, Interface2, Interface3, Interface4, Interface5, Interface6{
.....
}
這意味着這是對 希望這有助於你
是的,兩個以上的接口可以通過一個單獨的類來實現。
從PHP manual:如果需要,通過分離 用逗號分隔每個接口
類可以實現多於一個接口。
只要這些接口中沒有衝突的方法名稱,我相信沒有實際的限制。 – 2015-02-11 13:11:10