class A { const STR = "A"; public function x() { echo self::STR; } } class B extends A{ const STR = "B"; } (new B)->x();最后輸出結(jié)果是A,該怎么理解這個呢?猜想一:self在編譯時(shí)會綁定為當(dāng)前類,可理解成編譯時(shí)所有的self替換為所處類名,這樣別的類繼承父類方法后,方法代碼里并不是self::xxx,而是父類名::xxx所以例子里的str就是父類里的str猜想二:子類繼承父類方法,其實(shí)并不是把父類方法拿過來,而是有了父類方法的訪問權(quán)限,當(dāng)調(diào)用子類里沒有的方法時(shí),會去父類里找,找到后在父類里執(zhí)行,自然就self指向父類這兩種到底哪種對呢?如果都不對的話應(yīng)該怎么理解self呢?先謝謝大家指點(diǎn)了
怎么理解PHP里的self呢?
一只甜甜圈
2018-07-05 18:18:06