在PHP 中存取受保護的物件屬性
PHP 的物件導向程式設計提供了三種存取修飾符:public、protected 和private。然而,在處理某些物件時,無法直接存取受保護的屬性可能會令人沮喪。本文探討了在 5.5 之前的 PHP 版本中檢索受保護屬性的解決方案。
ReflectionClass 來救援
在 PHP 5.5 之前,ReflectionClass 類別提供了一種方法存取受保護的屬性。以下函數示範如何操作:
function accessProtected($obj, $prop) { $reflection = new ReflectionClass($obj); $property = $reflection->getProperty($prop); $property->setAccessible(true); return $property->getValue($obj); }
透過使用此函數,您可以透過將物件和屬性名稱作為參數傳遞來存取受保護的屬性。例如,給定範例中的物件:
$value = accessProtected($obj, '_value');
此方法將有效檢索受保護的 _value 屬性並將其儲存在 $value 變數中。
PHP 5.2 的注意事項.17
雖然ReflectionClass 解決方案在您的本地環境中有效,但在運行PHP 的伺服器上可能不可用版本5.2. 17。不幸的是,在此類 PHP 版本中沒有其他方法可以存取受保護的屬性。
以上是如何存取舊版 PHP 版本(5.5 之前)中受保護的物件屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!