1. 程式人生 > >PHP 反射機制

PHP 反射機制

簡介

面向物件變成中物件被賦予了自省的能力,而這個自省的過程就是反射。
反射,直觀理解就是根據到達地找到出發地和來源。比方說,我給你一個光禿禿的物件,我可以僅僅通過這個物件就能知道它所屬的類,擁有哪些方法。
反射指在php執行狀態中,擴充套件分析php程式,匯出或者提取出關於類、方法、屬性、引數等的詳細資訊,包括註釋。這種動態獲取資訊以及動態呼叫物件方法的功能稱為反射api

如何使用反射api

<?php 
class person{
    public $name;
    public $gender;
    public function say()
{
echo $this->$name," \tis ",$this->$gender,"\r\n"; } public function __set($name,$value){ $this->$name=$value; } public function __get($name){ if(!isset($this->$name)){ echo "未設定"; $this->$name="正在為你設定預設值"; } return
$this -> $name; } } $student = new person(); $student->name='Tom'; $student->gender='male'; $student->age=24; echo "----我是物件中的屬性"; //獲取物件屬性列表 $reflect = new ReflectionObject($student);//反射例項話之後的結構 $props = $reflect->getProperties();//獲取物件屬性列表 foreach ($props as $prop) { print $prop
->getName()."<br>"; } echo "-----我是物件中的方法"; //獲取物件方法列表 $m = $reflect->getMethods(); foreach ($m as $prop) { print $prop->getName()."<br>"; } echo "-----不用反射api,使用class函式,返回物件屬性和關聯陣列以及更多的資訊<br>"; echo "返回物件屬性的關聯陣列<br>"; //返回物件屬性的關聯陣列 var_dump(get_object_vars($student)); echo "<br>類屬性<br>"; //類屬性 var_dump(get_class_vars(get_class($student))); echo "<br>返回由類的方法名組成的陣列<br>"; //返回由類的方法名組成的陣列 var_dump(get_class_methods(get_class($student)));

執行結果

----我是物件中的屬性name
gender
age
-----我是物件中的方法say
__set
__get
-----不用反射api,使用class函式,返回物件屬性和關聯陣列以及更多的資訊
返回物件屬性的關聯陣列
array(3) { ["name"]=> string(3) "Tom" ["gender"]=> string(4) "male" ["age"]=> int(24) } 
類屬性
array(2) { ["name"]=> NULL ["gender"]=> NULL } 
返回由類的方法名組成的陣列
array(3) { [0]=> string(3) "say" [1]=> string(5) "__set" [2]=> string(5) "__get" }

參考書籍

《PHP核心技術與最佳實踐》

相關推薦

PHP反射機制簡單理解

什麼是反射呢? 在PHP的面向物件程式設計中的物件,它被系統賦予自省的能力,而這個自省的過程,我們把它叫做反射。 我們對反射的直觀理解可以是,根據達到地,找到出發地和來源這麼一個過程,通俗來講就是,我給你一個光禿禿的物件,完事你可以根據這個物件,知道它所屬的類,擁有哪些方法。 在PH

PHP 反射機制Reflection

簡介 PHP Reflection API是PHP5才有的新功能,它是用來匯出或提取出關於類、方法、屬性、引數等的詳細資訊,包括註釋。 class Reflection { } interface Reflector { } class ReflectionExcept

php反射機制以及利用php反射機制實現可插拔可擴充套件的外掛架構

反射是什麼? 它是指在PHP執行狀態中,擴充套件分析PHP程式,匯出或提取出關於類、方法、屬性、引數等的詳細資訊,包括註釋。這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為反射API。 反射是操縱面向物件範型中元模型的API,其功能十分強大,可幫助我們構建複雜,可擴充

php反射機制

PHP5添加了一項新的功能:Reflection,這個功能使得phper可以reverse-engineer class, interface,function,method and extension,通過php程式碼,就可以得到某object的所有資訊,並且可以和它互動

PHP反射機制原理與用法詳解

本文例項講述了PHP反射機制原理與用法。分享給大家供大家參考,具體如下: 反射 面向物件程式設計中物件被賦予了自省的能力,而這個自省的過程就是反射。 反射,直觀理解就是根據到達地找到出發地和來源。比如,一個光禿禿的物件,我們可以僅僅通過這個物件就能知道它所屬的類、擁有哪些方

PHP反射機制(二)

PHP5.* 反射API ReflectionClass 反射類用於獲取類的註釋、屬性、引數、方法、PHP擴充套件資訊、修飾符等等(詳細:官網文件) example: <?php c

PHP 反射機制

簡介 面向物件變成中物件被賦予了自省的能力,而這個自省的過程就是反射。 反射,直觀理解就是根據到達地找到出發地和來源。比方說,我給你一個光禿禿的物件,我可以僅僅通過這個物件就能知道它所屬的

理解php反射機制-1

面向物件的程式設計中物件被賦予了自省的能力,而這個自省的過程就是反射.通過使用反射api就能夠實現動態的獲 取一個類所有屬性和方法以及呼叫該方法和屬性.  如果把php執行時看做是一面鏡子, 把php程式碼看做是一個物體。  當你的程式在php執行時執行的時候, 你的程式想知道你現在執行的php程式碼的一些資

PHP反射機制實現動態代理的程式碼

演示用程式碼如下所示: <?php class ClassOne { function callClassOne() { print "In Class One"; } } class ClassOneDelegator { private $targets; f

跟著辛星用PHP反射機制來實現插件

red 實現 track 這一 列表 each 方法 fun 繼承 我的博文的前一篇解說了PHP的反射機制是怎麽回事,假設讀者還不清楚反射機制,能夠搜索下或者看我的博文,都是不錯的選擇。我們開始解說一下怎麽用PHP來實現插件機制。所謂插件機制。就是我們定義

PHP反射機制

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP OOP 反射機制

 初步接觸反射機制(可以獲取到改類的所有資訊) ReflectionClass 類報告了一個類的有關資訊。 <?php header("content-type:text/html;charset=utf-8"); // 未知類 框架的架構; class Dog{

php laravel實現依賴注入原理(反射機制

在使用laravel的時候,可以看到大量地使用了依賴注入。比如控制器中的HttpRequest物件,各種Model的實現類等等。這種實現方式的好處在於不需要再方法中頻繁地new某些例項,實現模組的解耦。 依賴注入使用PHP反射API實現 反射機制被多種語言使用,用來獲取類、例項物件、方法

跟著辛星深入探討一下PHP反射機制

      早在之前學習Java的時候,清楚的記得是學完了多執行緒之後學習的反射,現在在PHP中當然也有反射機制,如果童鞋你還不明白,那就需要搞明白奧,畢竟反射的功能還是蠻強大的,學習它還是很具有現實意義的。 反射從簡單去理解就是我們拿到一個類,得到這個類的一些資訊,比如它

反射PHP反射機制【原創】

摘要:主要是參考列旭鬆、陳文著的《PHP核心技術與最佳實踐》的1.5節。 1.1 定義 反射,直觀理解就是根據到達地找到出發地和來源。比如說,給你一個光禿禿的物件,可以僅僅通過這個物件就能知道它所屬的類以及擁有的方法。 反射,指在PHP執行狀態中,擴充套件分析PHP

跟著辛星用PHP反射機制來實現外掛

     我的博文的前一篇講解了PHP的反射機制是怎麼回事,如果讀者還不清楚反射機制,可以搜尋下或者看我的博文,都是不錯的選擇,我們開始講解一下怎麼用PHP來實現外掛機制。所謂外掛機制,就是我們定義一個介面,即我們定義一個interface,然後第三方外掛就去實現這個int

PHP反射機制講解

介紹:PHP5添加了一項新的功能:Reflection。這個功能使得phper可以reverse-engineer class, interface,function,method and extension。通過PHP程式碼,就可以得到某object的所有資訊,並且可以和它

反射機制的理解

java反射機制的理解以前學過很長時間反射機制,很是不理解?今天終於看到一本書講的很詳細。所有反射機制都是通過一個類叫做Class來實現:讓我看看書上是怎麽介紹的ClassClass是java.lang包中的類,該類的實例用來封裝對象運行時的狀態。當一個類被加載且創建對象時,和該類相關的一個類型為Claas的

Python的反射機制、hasattr() getattr() setattr() 函數使用方法詳解

對象 tee lin sel __main__ err ace traceback 一個 hasattr(object, name)判斷一個對象裏面是否有name屬性或者name方法,返回BOOL值,有name特性返回True, 否則返回False。需要註意的是name要用

java反射機制

else ++ 類型 應該 動態 error param 字母 什麽 最近在做一個項目。 需求是這樣的,前端傳一個參數param表示要從服務器獲取的參數,後端需要把對應的參數從服務器中取出來。 本來覺得沒什麽,應該蠻簡單。結果一看表,嗯,40多個參數,如果用if...els