?????? "???? ??? ????"? ??? ?? ???, ?????? ??? ??? ?? ?? ???? ????.
?? ?? ????? ??? ?????? ????? ?? ?????? ????? ??? ???? ???? ???.
?????? ?????. PHP?? duck-typing? ???? ??? ??? ????. ??? ?? ???? ????? ????? ???? ???? ???? ???. ?? ??
?????? ????? $person
需要有 getName()
方法,您可以創(chuàng)建一個(gè)類(lèi) Person
> 有一個(gè) getName()
??? ??? ? ??? ???. ?? ?? ?? ??? ???? ??? ??? ? ???? ??? ?????.
???? ???? ??? ?? ? ?? ?????? ??? ??? ?????.
????? ???? ??? ??? ??? ? ? ?? ??? ???? ??? ??? ?????. Pet
類(lèi)。用戶(hù)不想僅僅為了 Pet
? ???? ?? ??? ???.
Pet
以便同時(shí)使用 Greeter
和 Feeder
????? ?? ??? ??????
??? ?????
???????? PHP? ?? ??? ???? ????. ??? ????? ??? ???? ?? ? ????. ?? ??? ???? ????. ??? ?? ???? ???? ????? ? ??? ??? ? ????. 擴(kuò)展
??? ??? ?? ????. getName() 返回
$first_name
和 $last_name
代碼>)。您的庫(kù)類(lèi)中可能沒(méi)有合理的默認(rèn)實(shí)現(xiàn) getName()
PHP? "?????"? ???? ? ??? ???? ??? ??????
?????? ???? ? ?????? ??? ?? ?? ??? ? ????.
Greeter
???
Feeder
???
???? PHP?? ??? ?????. Pet
???
???? ??? Pet
類(lèi)的對(duì)象可以與 Greeter
庫(kù)和 Feeder
????? ?
ArrayAccess
?? ??? ?????? ????? PHP? ?? ???? ???? ??? ?????. ??? ?? Greeter
或 Feeder
??? ???? ?? ?? PHP? ArrayAccess? ???? ???? ?? ??? ??? ?????. ?, AccessAccess ?????? ???? ???? ??? ? ? ??? ??? ??? ? ????.
?? ????
?????? ?? ???? ????.
?????? ?? ??? $obj
? ???? ??? ? ?? ?? ? ????.