理解PHP 中「新自我」與「新靜態」之間的差異
將PHP 5.3 庫轉換為PHP 5.2 可能會帶來挑戰,主要是由於語法上的差異。癥結之一是使用後期靜態綁定,例如 return new static($options)。
轉換為「新自我」的影響
將return new static($options) 改為return new self($options) 將不會產生相同的結果。 PHP 5.3 中引入的後期靜態綁定允許您使用 static 關鍵字呼叫類別的方法,該關鍵字引用呼叫該方法的類別。然而,PHP 5.2 不支援此功能。
「新自我」與「新靜態」之間的主要區別
範例:
考慮以下內容code:
class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self()); // A echo get_class(B::get_static()); // B echo get_class(A::get_self()); // A echo get_class(A::get_static()); // A
在此範例中,get_self 中的自綁定到類別A,因為該方法是在A 中定義的。但是,get_static 中的靜態呼叫綁定到該方法所在的類別稱為,根據上下文而變化(例如,第二個中的B
結論
對於PHP 5.2,後期靜態綁定沒有直接的解決方法。當程式碼轉換為早期版本時,了解這些關鍵字之間的差異至關重要。
以上是PHP 5.2 到 5.3 遷移:`new self()` 和 `new static()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!