• <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年專注高端品質開發
    • 返回頂部
    自拍偷自拍亚洲精品情侣| 欧亚精品卡一卡二卡三| 精品日韩二区三区精品视频| 亚洲国模精品一区| 国产精品一二三区| 久久精品一本到99热免费| 久久99精品国产一区二区三区| 国产精品午夜福利在线无码| 九色国产在视频线精品视频| 亚洲日韩久久综合中文字幕| 精品国产午夜理论片不卡| 久久精品国产亚洲AV不卡| 日韩精品视频在线播放| 一本精品中文字幕在线| 国产乱码精品一区二区三区中 | 久久国产亚洲精品| 国产亚洲精品福利在线无卡一| 国产精品亚洲综合专区片高清久久久 | 日韩免费视频观看| 日韩亚洲国产高清免费视频| 亚洲欧洲中文日韩久久AV乱码| 91久久精品国产91久久性色tv| 国产精品男男视频一区二区三区| 日批日韩在线观看| 精品无码中出一区二区| 日韩在线视频不卡一区二区三区| 日韩美女在线观看一区| 任我爽橹在线精品视频| 精品久久久久久亚洲精品 | 人妻在线日韩免费视频| 日韩一二三区毛片| 丰满日韩放荡少妇无码视频 | 免费精品一区二区三区第35| 亚洲国产美女精品久久久久∴| 日韩美女中文字幕| 日韩色日韩视频亚洲网站| 四虎永久在线精品国产馆V视影院| 亚洲精品成人区在线观看| 国产乱子伦精品免费视频| 久久久人妻精品无码一区| 日产精品一线二线三线京东|