亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP反射使用實(shí)例和PHP反射API的中文說明

 更新時(shí)間:2014年07月02日 12:08:02   投稿:junjie  
這篇文章主要介紹了PHP反射使用實(shí)例和PHP反射API的中文說明,重點(diǎn)在對(duì)PHP的反射API中每個(gè)方法都做了中文說明,需要的朋友可以參考下

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

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

復(fù)制代碼 代碼如下:

$uid = $_GET['uid'];

$score = $_GET['score'];

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

當(dāng)然前提是約定好了參數(shù)名稱和get方法傳值變量名一致。

采用PHP的反射API,獲得函數(shù)參數(shù)名稱和參數(shù)默認(rèn)值的方法如下:

復(fù)制代碼 代碼如下:

<?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、用途:
該擴(kuò)展分析php程序,導(dǎo)出或提取出關(guān)于類、方法、屬性、參數(shù)等的詳細(xì)信息,包括注釋。
Reflection可以說是對(duì)php庫函數(shù):“Classes/Objects 類/對(duì)象函數(shù)”的一個(gè)擴(kuò)展。
主要用在通過程序檢測(cè)現(xiàn)有php程序內(nèi)部關(guān)于類、方法等信息,并做出處理。

2、API概覽:

復(fù)制代碼 代碼如下:

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、詳細(xì)說明:(例子詳見php手冊(cè))

復(fù)制代碼 代碼如下:

①Reflection類 
<?php 
class Reflection 

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

?> 
 
②ReflectionException類 
 
該類繼承標(biāo)準(zhǔn)類,沒特殊方法和屬性。 
 
③ReflectionFunction類 
<?php 
class ReflectionFunction implements Reflector 

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

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

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

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

final private __clone() 
public object __construct(string name) 
public string __toString() 
public static string export() 
//導(dǎo)出該類的詳細(xì)信息 
public string getName() 
//取得類名或接口名 
public bool isInternal() 
//測(cè)試該類是否為系統(tǒng)內(nèi)部類 
public bool isUserDefined() 
//測(cè)試該類是否為用戶自定義類 
public bool isInstantiable() 
//測(cè)試該類是否被實(shí)例化過 
public bool hasConstant(string name) 
//測(cè)試該類是否有特定的常量 
public bool hasMethod(string name) 
//測(cè)試該類是否有特定的方法 
public bool hasProperty(string name) 
//測(cè)試該類是否有特定的屬性 
public string getFileName() 
//取得定義該類的文件名,包括路徑名 
public int getStartLine() 
//取得定義該類的開始行 
public int getEndLine() 
//取得定義該類的結(jié)束行 
public string getDocComment() 
//取得該類的注釋 
public ReflectionMethod getConstructor() 
//取得該類的構(gòu)造函數(shù)信息 
public ReflectionMethod getMethod(string name) 
//取得該類的某個(gè)特定的方法信息 
public ReflectionMethod[] getMethods() 
//取得該類的所有的方法信息 
public ReflectionProperty getProperty(string name) 
//取得某個(gè)特定的屬性信息 
public ReflectionProperty[] getProperties() 
//取得該類的所有屬性信息 
public array getConstants() 
//取得該類所有常量信息 
public mixed getConstant(string name) 
//取得該類特定常量信息 
public ReflectionClass[] getInterfaces() 
//取得接口類信息 
public bool isInterface() 
//測(cè)試該類是否為接口 
public bool isAbstract() 
//測(cè)試該類是否為抽象類 
public bool isFinal() 
//測(cè)試該類是否聲明為final 
public int getModifiers() 
//取得該類的修飾符,返回值類型可能是個(gè)資源類型 
//通過Reflection::getModifierNames($class->getModifiers())進(jìn)一步讀取 
public bool isInstance(stdclass object) 
//測(cè)試傳入的對(duì)象是否為該類的一個(gè)實(shí)例 
public stdclass newInstance(mixed* args) 
//創(chuàng)建該類實(shí)例 
public ReflectionClass getParentClass() 
//取得父類 
public bool isSubclassOf(ReflectionClass class) 
//測(cè)試傳入的類是否為該類的父類 
public array getStaticProperties() 
//取得該類的所有靜態(tài)屬性 
public mixed getStaticPropertyValue(string name [, mixed default]) 
//取得該類的靜態(tài)屬性值,若private,則不可訪問 
public void setStaticPropertyValue(string name, mixed value) 
//設(shè)置該類的靜態(tài)屬性值,若private,則不可訪問,有悖封裝原則 
public array getDefaultProperties() 
//取得該類的屬性信息,不含靜態(tài)屬性 
public bool isIterateable() 
public bool implementsInterface(string name) 
//測(cè)試是否實(shí)現(xiàn)了某個(gè)特定接口 
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() 
//導(dǎo)出該方法的信息 
public mixed invoke(stdclass object, mixed* args) 
//調(diào)用該方法 
public mixed invokeArgs(stdclass object, array args) 
//調(diào)用該方法,傳多參數(shù) 
public bool isFinal() 
//測(cè)試該方法是否為final 
public bool isAbstract() 
//測(cè)試該方法是否為abstract 
public bool isPublic() 
//測(cè)試該方法是否為public 
public bool isPrivate() 
//測(cè)試該方法是否為private 
public bool isProtected() 
//測(cè)試該方法是否為protected 
public bool isStatic() 
//測(cè)試該方法是否為static 
public bool isConstructor() 
//測(cè)試該方法是否為構(gòu)造函數(shù) 
public bool isDestructor() 
//測(cè)試該方法是否為析構(gòu)函數(shù) 
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() 
//導(dǎo)出該屬性的詳細(xì)信息 
public string getName() 
//取得該屬性名 
public bool isPublic() 
//測(cè)試該屬性名是否為public 
public bool isPrivate() 
//測(cè)試該屬性名是否為private 
public bool isProtected() 
//測(cè)試該屬性名是否為protected 
public bool isStatic() 
//測(cè)試該屬性名是否為static 
public bool isDefault() 
public int getModifiers() 
//取得修飾符 
public mixed getValue(stdclass object) 
//取得該屬性值 
public void setValue(stdclass object, mixed value) 
//設(shè)置該屬性值 
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() 
//導(dǎo)出該擴(kuò)展的所有信息 
public string getName() 
//取得該擴(kuò)展的名字 
public string getVersion() 
//取得該擴(kuò)展的版本 
public ReflectionFunction[] getFunctions() 
//取得該擴(kuò)展的所有函數(shù) 
public array getConstants() 
//取得該擴(kuò)展的所有常量 
public array getINIEntries() 
//取得與該擴(kuò)展相關(guān)的,在php.ini中的指令信息 
public ReflectionClass[] getClasses() 
public array getClassNames() 

?> 

相關(guān)文章

  • php面向?qū)ο笾械哪g(shù)方法中文說明

    php面向?qū)ο笾械哪g(shù)方法中文說明

    這篇文章主要介紹了php面向?qū)ο笾械哪g(shù)方法中文說明,明白這些方法才好寫面向?qū)ο蟪绦?,需要的朋友可以參考?/div> 2014-03-03
  • php file_get_contents函數(shù)輕松采集html數(shù)據(jù)

    php file_get_contents函數(shù)輕松采集html數(shù)據(jù)

    PHP手冊(cè)里是這么解釋的:file_get_contents — 將整個(gè)文件讀入一個(gè)字符串,于是可以很容易的獲取其他站的信息,再用正則加以變換,再做一些判斷和設(shè)定,就OK了,不多說了,放代碼,我基本都做了解釋的。
    2010-04-04
  • 利用Laravel生成Gravatar頭像地址的優(yōu)雅方法

    利用Laravel生成Gravatar頭像地址的優(yōu)雅方法

    Gravatar是一圖像跟隨著您到訪過的網(wǎng)站,當(dāng)您在博客中留言或發(fā)表文章,它將會(huì)出現(xiàn)在您的名稱旁。下面這篇文章主要給大家介紹了關(guān)于利用Laravel如何生成 Gravatar 頭像地址的優(yōu)雅方法,需要的朋友可以參考下。
    2017-12-12
  • TP5框架安全機(jī)制實(shí)例分析

    TP5框架安全機(jī)制實(shí)例分析

    這篇文章主要介紹了TP5框架安全機(jī)制,結(jié)合實(shí)例形式分析了thinkPHP5防止SQL注入以及表單合法性檢測(cè)的安全性操作技巧,需要的朋友可以參考下
    2020-04-04
  • Thinkphp框架+Layui實(shí)現(xiàn)圖片/文件上傳功能分析

    Thinkphp框架+Layui實(shí)現(xiàn)圖片/文件上傳功能分析

    這篇文章主要介紹了Thinkphp框架+Layui實(shí)現(xiàn)圖片/文件上傳功能,結(jié)合實(shí)例形式詳細(xì)分析了Thinkphp+Layui實(shí)現(xiàn)圖片文件上傳的具體步驟、原理與相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • php 動(dòng)態(tài)多文件上傳

    php 動(dòng)態(tài)多文件上傳

    php 動(dòng)態(tài)多文件上傳實(shí)例代碼,前臺(tái)是javascript后臺(tái)用的是php
    2009-01-01
  • 詳解關(guān)于php的xdebug配置(編輯器vscode)

    詳解關(guān)于php的xdebug配置(編輯器vscode)

    這篇文章主要介紹了詳解關(guān)于php的xdebug配置(編輯器vscode),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • php定界符<<<使用技巧和實(shí)例

    php定界符<<<使用技巧和實(shí)例

    這篇文章主要介紹了php定界符<<<使用技巧和實(shí)例,講解了定界符的功能和使用注意事項(xiàng)等,需要的朋友可以參考下
    2014-06-06
  • 360搜索引擎自動(dòng)收錄php改寫方案

    360搜索引擎自動(dòng)收錄php改寫方案

    這篇文章主要介紹了360搜索引擎自動(dòng)收錄php改寫方案的相關(guān)資料,需要的朋友可以參考下
    2018-04-04
  • ThinkPHP標(biāo)簽制作教程

    ThinkPHP標(biāo)簽制作教程

    這篇文章主要介紹了ThinkPHP標(biāo)簽制作方法,需要的朋友可以參考下
    2014-07-07

最新評(píng)論