是的,這是可能的,但實際上應該這樣寫:
class dostuff extends config {
public static function get_url(){
echo parent::$base_url;
}
}
但在這種情況下,你可以用self::$base_url
和static::$base_url
訪問它都 - 因爲你不伸出類重新聲明這個屬性。你都做到了的話,就不會有一個區別:
self::$base_url
總是指財產在該行的書面同一類,
static::$base_url
到類的屬性對象所屬的(所以稱爲「後期靜態綁定」)。
考慮這個example:
class config {
public static $base_url = 'http://config.example.com';
public function get_self_url() {
return self::$base_url;
}
public function get_static_url() {
return static::$base_url;
}
}
class dostuff extends config {
public static $base_url = 'http://dostuff.example.com';
}
$a = new config();
echo $a->get_self_url(), PHP_EOL;
echo $a->get_static_url(), PHP_EOL; // both config.example.com
$b = new dostuff();
echo $b->get_self_url(), PHP_EOL; // config.example.com
echo $b->get_static_url(), PHP_EOL; // dostuff.example.com
當我有代表時,我會upvote這個。另一個答案更清晰,因爲當繼承是一個長鏈時,它避免了向父母的父母打電話。 – Eddie
謝謝你的例子。我瞭解了後期的靜態綁定。 –