您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關PHP中獲取對象屬性的方法有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
具體如下:
class TestClass { private $a; protected $b; public $c; public $d; public static $e; private function funcA() { } protected function funcB() { } public function funcC() { } public function getPropertyMethodOne() { echo "[get_object_vars]", PHP_EOL; $vars = get_object_vars($this); foreach ($vars as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } } public function getPropertyMethodTwo() { echo "[foreach object]", PHP_EOL; foreach ($this as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } } public function getPropertyMethodThree() { echo "[reflection]", PHP_EOL; $class = new ReflectionClass($this); foreach ($class->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { if (!$property->isStatic()) { echo $property->getName(), ' => ', $property->getValue($this), PHP_EOL; } } } }
測試代碼一
$obj = new TestClass(); echo "[get_object_vars]", PHP_EOL; $vars = get_object_vars($obj); foreach ($vars as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } echo "[foreach object]", PHP_EOL; foreach ($obj as $k => $v) { echo $k, ' => ', $v, PHP_EOL; } echo "[reflection]", PHP_EOL; $class = new ReflectionClass($obj); foreach ($class->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { if (!$property->isStatic()) { echo $property->getName(), ' => ', $property->getValue($obj), PHP_EOL; } }
輸出:
[get_object_vars]
c =>
d =>
[foreach object]
c =>
d =>
[reflection]
c =>
d =>
可見,當著三種方法用在類的外部時,結果是一樣的。get_object_vars()
和foreach是獲取到的是對象的public non-static屬性,而通過反射的話則需要手動篩選出public non-static屬性。
測試代碼二
$obj = new TestClass(); $obj->getPropertyMethodOne(); $obj->getPropertyMethodTwo(); $obj->getPropertyMethodThree();
輸出
[get_object_vars]
a =>
b =>
c =>
d =>
[foreach object]
a =>
b =>
c =>
d =>
[reflection]
c =>
d =>
可見,get_object_vars()
和foreach用在類內部時,private、protected、public的實例屬性都能獲取到。反射就不用說了,通過手動篩選,各種類型的屬性都能獲取到。
上述就是小編為大家分享的PHP中獲取對象屬性的方法有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。