• <kbd id="qyk40"></kbd>
  • <strike id="qyk40"></strike><samp id="qyk40"><pre id="qyk40"></pre></samp>

    反射的理解

      它是指在php的運行狀態中,擴展分析php程序,導出或者提取出關于類、方法、屬性、參數等詳細信息,甚至包括注釋。這種動態獲取的信息以及動態調用對象的方法的功能稱為反射API.反射是操縱面向對象模型中元模型的API,其功能十分強大,可以幫助我們構建復雜,可擴展的應用。(ps:包括在工廠模式中的使用)

      反射API是php內建的oop技術擴展,包括一些類、異常和接口,綜合使用他們可用來幫助我們分析其它類,接口,方法,屬性和擴展。這些oop擴展被稱為反射。

      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()

      //測試該類是否為系統內部類

      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)

      //創建該類實例

      public ReflectionClass getParentClass()

      //取得父類

      public bool isSubclassOf(ReflectionClass class)

      //測試傳入的類是否為該類的父類

      public array getStaticProperties()

      //取得該類的所有靜態屬性

      public mixed getStaticPropertyValue(string name [, mixed default])

      //取得該類的靜態屬性值,若private,則不可訪問

      public void setStaticPropertyValue(string name, mixed value)

      //設置該類的靜態屬性值,若private,則不可訪問,有悖封裝原則

      public array getDefaultProperties()

      //取得該類的屬性信息,不含靜態屬性

      public bool isIterateable()

      public bool implementsInterface(string name)

      //測試是否實現了某個特定接口

      public ReflectionExtension getExtension()

      public string getExtensionName()

      }

      ?>

      工廠模式應用:

      [php]

      class MoveDataFactory

      {

      /**

      * Description:簡單工廠模式,根據mode選取不同實例化對象

      * @return 對象實例

      */

      public function GetMoveClass($classname)

      {

      $reflectionclass = new ReflectionClass($classname);

      return $reflectionclass->newInstance();

      }

      }

    穩定

    產品高可用性高并發

    貼心

    項目群及時溝通

    專業

    產品經理1v1支持

    快速

    MVP模式小步快跑

    承諾

    我們選擇聲譽

    堅持

    10年專注高端品質開發
    • 返回頂部
    51精品视频免费国产专区| 日韩精品人妻一区二区三区四区 | 亚洲国产成人精品无码区在线秒播| 日批日韩在线观看| 网友偷拍日韩精品| 亚洲精品无码久久久| 国产精品熟女一区二区| 久久精品国产色蜜蜜麻豆| 亚洲国产精品乱码在线观看97| 久久国产精品99久久久久久牛牛| 久热精品人妻视频| 九九热线有精品视频99| 国产精品无码一二区免费| 亚洲精品无码日韩国产不卡av| 国产精品bbwbbwbbw| 91精品国产91热久久久久福利| 91精品视品在线播放| 亚洲AV成人精品网站在线播放| 中文国产成人精品久久久| 国产A三级久久精品| 亚洲精品美女久久久久| 久久免费观看国产99精品| 国产精品无码成人午夜电影| 中文成人无码精品久久久不卡| 久久精品国产一区二区电影| 精品多毛少妇人妻AV免费久久| 亚洲精品在线视频| 亚洲精品亚洲人成在线观看下载| 亚洲国产精品不卡毛片a在线| 一本之道av不卡精品| 亚洲国产成人久久精品99| 国产精品人人做人人爽| 国产精品高清2021在线| 亚洲国产精品不卡在线电影| 国产精品久久久亚洲| 久久精品亚洲综合专区| 久久亚洲精品中文字幕无码| 无码人妻精品一区二区三区久久 | 青青草国产精品视频| 日韩精品高清在线| 国产精品一区二区电影|