内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何正確的使用PHP反射-創(chuàng)新互聯(lián)

如何正確的使用PHP反射?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

為漢陰等地區(qū)用戶提供了全套網頁設計制作服務,及漢陰網站建設行業(yè)解決方案。主營業(yè)務為網站建設、網站制作、漢陰網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

最近在開發(fā)過程中需要獲取某個類方法的參數數量、名稱及參數順序,好根據參數的名稱來從$_GET里取值。

如方法原型為test($uid,$score), 那么我就知道需要需要從$_GET取


復制代碼 代碼如下:


$uid = $_GET['uid'];

$score = $_GET['score'];

然后調用方法$obj->test($uid,$score)

當然前提是約定好了參數名稱和get方法傳值變量名一致。

采用PHP的反射API,獲得函數參數名稱和參數默認值的方法如下:


復制代碼 代碼如下:


<?php 
class testClass{ 
     
    public function testFunc($param1,$param2=0){ 
         
    } 

 
$method = new ReflectionMethod('testClass', 'testFunc'); 
$params = $method--->getParameters(); 
foreach ($params as $param) { 
    echo 'param name: ' . $param->getName(),"\n"; 
    if ($param->isOptional()) { 
        echo 'Default value: ' . $param->getDefaultValue(),"\n"; 
    } 
}


下面是PHP反射API的介紹:

1、用途:
該擴展分析php程序,導出或提取出關于類、方法、屬性、參數等的詳細信息,包括注釋。
Reflection可以說是對php庫函數:“Classes/Objects 類/對象函數”的一個擴展。
主要用在通過程序檢測現有php程序內部關于類、方法等信息,并做出處理。

2、API概覽:


復制代碼 代碼如下:


class Reflection { } 
interface Reflector { } 
class ReflectionException extends Exception { } 
class ReflectionFunction implements Reflector { } 
class ReflectionParameter implements Reflector { } 
class ReflectionMethod extends ReflectionFunction { } 
class ReflectionClass implements Reflector { } 
class ReflectionObject extends ReflectionClass { } 
class ReflectionProperty implements Reflector { } 
class ReflectionExtension implements Reflector { }


3、詳細說明:(例子詳見php手冊)


復制代碼 代碼如下:


①Reflection類 
<?php 
class Reflection 

public static mixed export(Reflector r [,bool return]) 
//導出一個類或方法的詳細信息 
public static array getModifierNames(int modifiers) 
//取得修飾符的名字 

?> 
 
②ReflectionException類 
 
該類繼承標準類,沒特殊方法和屬性。 
 
③ReflectionFunction類 
<?php 
class ReflectionFunction implements Reflector 

final private __clone() 
public object __construct(string name) 
public string __toString() 
public static string export() 
//導出該函數的詳細信息 
public string getName() 
//取得函數名 
public bool isInternal() 
//測試是否為系統(tǒng)內部函數 
public bool isUserDefined() 
//測試是否為用戶自定義函數 
public string getFileName() 
//取得文件名,包括路徑名 
public int getStartLine() 
//取得定義函數的起始行 
public int getEndLine() 
//取得定義函數的結束行 
public string getDocComment() 
//取得函數的注釋 
public array getStaticVariables() 
//取得靜態(tài)變量 
public mixed invoke(mixed* args) 
//調用該函數,通過參數列表傳參數 
public mixed invokeArgs(array args) 
//調用該函數,通過數組傳參數 
public bool returnsReference() 
//測試該函數是否返回引用 
public ReflectionParameter[] getParameters() 
//取得該方法所需的參數,返回值為對象數組 
public int getNumberOfParameters() 
//取得該方法所需的參數個數 
public int getNumberOfRequiredParameters() 
//取得該方法所需的參數個數 

?> 
 
④ReflectionParameter類: 
<?php 
class ReflectionParameter implements Reflector 

final private __clone() 
public object __construct(string name) 
public string __toString() 
public static string export() 
//導出該參數的詳細信息 
public string getName() 
//取得參數名 
public bool isPassedByReference() 
//測試該參數是否通過引用傳遞參數 
public ReflectionClass getClass() 
//若該參數為對象,返回該對象的類名 
public bool isArray() 
//測試該參數是否為數組類型 
public bool allowsNull() 
//測試該參數是否允許為空 
public bool isOptional() 
//測試該參數是否為可選的,當有默認參數時可選 
public bool isDefaultValueAvailable() 
//測試該參數是否為默認參數 
public mixed getDefaultValue() 
//取得該參數的默認值 

?> 
 
⑤ReflectionClass類: 
<?php 
class ReflectionClass implements Reflector 

final private __clone() 
public object __construct(string name) 
public string __toString() 
public static string export() 
//導出該類的詳細信息 
public string getName() 
//取得類名或接口名 
public bool isInternal() 
//測試該類是否為系統(tǒng)內部類 
public bool isUserDefined() 
//測試該類是否為用戶自定義類 
public bool isInstantiable() 
//測試該類是否被實例化過 
public bool hasConstant(string name) 
//測試該類是否有特定的常量 
public bool hasMethod(string name) 
//測試該類是否有特定的方法 
public bool hasProperty(string name) 
//測試該類是否有特定的屬性 
public string getFileName() 
//取得定義該類的文件名,包括路徑名 
public int getStartLine() 
//取得定義該類的開始行 
public int getEndLine() 
//取得定義該類的結束行 
public string getDocComment() 
//取得該類的注釋 
public ReflectionMethod getConstructor() 
//取得該類的構造函數信息 
public ReflectionMethod getMethod(string name) 
//取得該類的某個特定的方法信息 
public ReflectionMethod[] getMethods() 
//取得該類的所有的方法信息 
public ReflectionProperty getProperty(string name) 
//取得某個特定的屬性信息 
public ReflectionProperty[] getProperties() 
//取得該類的所有屬性信息 
public array getConstants() 
//取得該類所有常量信息 
public mixed getConstant(string name) 
//取得該類特定常量信息 
public ReflectionClass[] getInterfaces() 
//取得接口類信息 
public bool isInterface() 
//測試該類是否為接口 
public bool isAbstract() 
//測試該類是否為抽象類 
public bool isFinal() 
//測試該類是否聲明為final 
public int getModifiers() 
//取得該類的修飾符,返回值類型可能是個資源類型 
//通過Reflection::getModifierNames($class->getModifiers())進一步讀取 
public bool isInstance(stdclass object) 
//測試傳入的對象是否為該類的一個實例 
public stdclass newInstance(mixed* args) 
//創(chuàng)建該類實例 
public ReflectionClass getParentClass() 
//取得父類 
public bool isSubclassOf(ReflectionClass class) 
//測試傳入的類是否為該類的父類 
public array getStaticProperties() 
//取得該類的所有靜態(tài)屬性 
public mixed getStaticPropertyValue(string name [, mixed default]) 
//取得該類的靜態(tài)屬性值,若private,則不可訪問 
public void setStaticPropertyValue(string name, mixed value) 
//設置該類的靜態(tài)屬性值,若private,則不可訪問,有悖封裝原則 
public array getDefaultProperties() 
//取得該類的屬性信息,不含靜態(tài)屬性 
public bool isIterateable() 
public bool implementsInterface(string name) 
//測試是否實現了某個特定接口 
public ReflectionExtension getExtension() 
public string getExtensionName() 

?> 
 
⑥ReflectionMethod類: 
<?php 
class ReflectionMethod extends ReflectionFunction 

public __construct(mixed class, string name) 
public string __toString() 
public static string export() 
//導出該方法的信息 
public mixed invoke(stdclass object, mixed* args) 
//調用該方法 
public mixed invokeArgs(stdclass object, array args) 
//調用該方法,傳多參數 
public bool isFinal() 
//測試該方法是否為final 
public bool isAbstract() 
//測試該方法是否為abstract 
public bool isPublic() 
//測試該方法是否為public 
public bool isPrivate() 
//測試該方法是否為private 
public bool isProtected() 
//測試該方法是否為protected 
public bool isStatic() 
//測試該方法是否為static 
public bool isConstructor() 
//測試該方法是否為構造函數 
public bool isDestructor() 
//測試該方法是否為析構函數 
public int getModifiers() 
//取得該方法的修飾符 
public ReflectionClass getDeclaringClass() 
//取得該方法所屬的類 
// Inherited from ReflectionFunction 
final private __clone() 
public string getName() 
public bool isInternal() 
public bool isUserDefined() 
public string getFileName() 
public int getStartLine() 
public int getEndLine() 
public string getDocComment() 
public array getStaticVariables() 
public bool returnsReference() 
public ReflectionParameter[] getParameters() 
public int getNumberOfParameters() 
public int getNumberOfRequiredParameters() 

?> 
 
⑦ReflectionProperty類: 
<?php 
class ReflectionProperty implements Reflector 

final private __clone() 
public __construct(mixed class, string name) 
public string __toString() 
public static string export() 
//導出該屬性的詳細信息 
public string getName() 
//取得該屬性名 
public bool isPublic() 
//測試該屬性名是否為public 
public bool isPrivate() 
//測試該屬性名是否為private 
public bool isProtected() 
//測試該屬性名是否為protected 
public bool isStatic() 
//測試該屬性名是否為static 
public bool isDefault() 
public int getModifiers() 
//取得修飾符 
public mixed getValue(stdclass object) 
//取得該屬性值 
public void setValue(stdclass object, mixed value) 
//設置該屬性值 
public ReflectionClass getDeclaringClass() 
//取得定義該屬性的類 
public string getDocComment() 
//取得該屬性的注釋 

?> 
 
⑧ReflectionExtension類 
<?php 
class ReflectionExtension implements Reflector { 
final private __clone() 
public __construct(string name) 
public string __toString() 
 
public static string export() 
//導出該擴展的所有信息 
public string getName() 
//取得該擴展的名字 
public string getVersion() 
//取得該擴展的版本 
public ReflectionFunction[] getFunctions() 
//取得該擴展的所有函數 
public array getConstants() 
//取得該擴展的所有常量 
public array getINIEntries() 
//取得與該擴展相關的,在php.ini中的指令信息 
public ReflectionClass[] getClasses() 
public array getClassNames() 

?>


關于如何正確的使用PHP反射問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

當前題目:如何正確的使用PHP反射-創(chuàng)新互聯(lián)
標題路徑:http://www.rwnh.cn/article28/pijjp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站內鏈、用戶體驗網站營銷、網站建設靜態(tài)網站、ChatGPT

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營
崇明县| 泌阳县| 顺义区| 常德市| 洪江市| 法库县| 巴里| 电白县| 盈江县| 巴东县| 平罗县| 汶川县| 酉阳| 新郑市| 中山市| 沛县| 冷水江市| 石棉县| 轮台县| 宿松县| 吉林市| 沁源县| 永仁县| 海伦市| 民丰县| 那坡县| 门头沟区| 通化市| 噶尔县| 农安县| 灌阳县| 长子县| 克山县| 泊头市| 广安市| 贺州市| 东兰县| 正安县| 泰州市| 平谷区| 台江县|