PHP延遲靜態繫結使用方法例項解析

2022-09-26 02:39:12 字數 915 閱讀 6854

php的繼承模型中有乙個存在已久的問題,那就是在父類中引用擴充套件類的最終狀態比較困難。我們來看一下**清單5-11中的例子。

**清單5-11 意想不到的繼承

<?php class parentbase

} class descendant extends parentbase

echo descendant::render();

parent value

在這個例子中,render()方法中使用了self關鍵字,這是指parentbase類而不是指descendant類。在parentbase::render()方法中沒法訪問$property的最終值。為了解決這個問題,需要在子類中重寫render()方法。

通過引入延遲靜態繫結功能,可以使用static作用域關鍵字訪問類的屬性或者方法的最終值,如**所示。

<?php class parentbase

} class descendant extends parentbase

echo descendant::render();

descendant va程式設計客棧lue

通過使用靜態作用域,可以強制php在最終的類中查詢所有屬性的值。除了這個延遲繫結行為,php還新增了get_called_class()函式,這允許檢查繼承的方法是從哪個派生類呼叫的。以下代程式設計客棧碼程式設計客棧顯示了使用get_called_class()函式獲得當前的類呼叫場景的方法。

使用get_called_class()方法

<?php class parentbase

} class decendant extends parentbase {}

echo descendant::render();

descendant

本文標題: php延遲靜態繫結使用方法例項解析

本文位址:

PHP延遲靜態繫結

1 self用法 self是指向定義它的當前類的指標。當前類 current class class person 獲取年齡 public static function getage 輸出 self name i am person self age 18 2 static用法 static是指向...

PHP延遲靜態繫結

所謂延遲靜態繫結,顧名思義,靜態呼叫時 符號左側的部分的的繫結是延遲,也就是說不再被解析為定義當前方法所在的類,而是在實際執行時計算的。class people public static function eat class fatguy extends people public static ...

PHP靜態延遲繫結

php版本5.3起增加了靜態延遲繫結,也稱遲繫結,主要用於在繼承範圍內引用靜態呼叫的類。簡單地來說 static 不再被解析為當前方法所定義的類,而是在實際執行時計算的。意外的繼承 class person class man extends person echo man say person在這...