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