php面向物件之-延遲繫結複習-132
阿新 • • 發佈:2019-01-24
<span style="font-size:14px;"><?php //01.php /**** 燕十八 公益PHP講堂 論 壇: http://www.zixue.it 微 博: http://weibo.com/Yshiba YY頻道: 88354001 ****/ /*** ====筆記部分==== ***/ class Animal { const age = 1; public static $leg = 4; public static function cry() { echo '嗚嗚<br />'; } public static function t1() { self::cry(); echo self::age,'<br />'; echo self::$leg,'<br />'; } public static function t2() { static::cry(); echo static::age,'<br />'; echo static::$leg,'<br />'; } } class Human extends Animal { public static $leg = 2; public static function cry() { echo '哇哇<br />'; } } class Stu extends Human { const age = 16; public static function cry() { echo '嚶嚶<br />'; } } Stu::t1(); //嗚嗚,1,4 Stu::t2(); // 嚶嚶,16,2 ?></span><span style="font-size: 18px;"> </span>
對於Stu:t1()的結果:先在Stu類中找t1, 找不到,到Human類中找,也沒有,繼續找Animal,有t1, 因此綁定了Animal 類,所以結果應該是self繫結為Animal,因此應該 是 echo $Animal::age; echo $Animal::leg;
對於Stu:t2()的結果:先在Stu類中找t2, 找不到,到Human類中找,也沒有,繼續找Animal,有t2,而此前加的是 static,先繫結Animal,再繫結Stu類,所以結果應該是
(不要問為什麼會這樣,我也不知道,因為php中的執行機制就是這樣)