香蕉久久久久久av综合网成人,天天躁日日躁狠狠躁av麻豆男男 ,午夜福利网国产a,偷国产乱人伦偷精品视频,午夜裸体性播放

反射的理解

  它是指在php的運(yùn)行狀態(tài)中,擴(kuò)展分析php程序,導(dǎo)出或者提取出關(guān)于類(lèi)、方法、屬性、參數(shù)等詳細(xì)信息,甚至包括注釋。這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為反射API.反射是操縱面向?qū)ο竽P椭性P偷腁PI,其功能十分強(qiáng)大,可以幫助我們構(gòu)建復(fù)雜,可擴(kuò)展的應(yīng)用。(ps:包括在工廠模式中的使用)

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

  ReflectionClass

  [php]

  

  class ReflectionClass implements Reflector

  {

  final private __clone()

  public object __construct(string name)

  public string __toString()

  public static string export()

  //導(dǎo)出該類(lèi)的詳細(xì)信息

  public string getName()

  //取得類(lèi)名或接口名

  public bool isInternal()

  //測(cè)試該類(lèi)是否為系統(tǒng)內(nèi)部類(lèi)

  public bool isUserDefined()

  //測(cè)試該類(lèi)是否為用戶自定義類(lèi)

  public bool isInstantiable()

  //測(cè)試該類(lèi)是否被實(shí)例化過(guò)

  public bool hasConstant(string name)

  //測(cè)試該類(lèi)是否有特定的常量

  public bool hasMethod(string name)

  //測(cè)試該類(lèi)是否有特定的方法

  public bool hasProperty(string name)

  //測(cè)試該類(lèi)是否有特定的屬性

  public string getFileName()

  //取得定義該類(lèi)的文件名,包括路徑名

  public int getStartLine()

  //取得定義該類(lèi)的開(kāi)始行

  public int getEndLine()

  //取得定義該類(lèi)的結(jié)束行

  public string getDocComment()

  //取得該類(lèi)的注釋

  public ReflectionMethod getConstructor()

  //取得該類(lèi)的構(gòu)造函數(shù)信息

  public ReflectionMethod getMethod(string name)

  //取得該類(lèi)的某個(gè)特定的方法信息

  public ReflectionMethod[] getMethods()

  //取得該類(lèi)的所有的方法信息

  public ReflectionProperty getProperty(string name)

  //取得某個(gè)特定的屬性信息

  public ReflectionProperty[] getProperties()

  //取得該類(lèi)的所有屬性信息

  public array getConstants()

  //取得該類(lèi)所有常量信息

  public mixed getConstant(string name)

  //取得該類(lèi)特定常量信息

  public ReflectionClass[] getInterfaces()

  //取得接口類(lèi)信息

  public bool isInterface()

  //測(cè)試該類(lèi)是否為接口

  public bool isAbstract()

  //測(cè)試該類(lèi)是否為抽象類(lèi)

  public bool isFinal()

  //測(cè)試該類(lèi)是否聲明為final

  public int getModifiers()

  //取得該類(lèi)的修飾符,返回值類(lèi)型可能是個(gè)資源類(lèi)型

  //通過(guò)Reflection::getModifierNames($class->getModifiers())進(jìn)一步讀取

  public bool isInstance(stdclass object)

  //測(cè)試傳入的對(duì)象是否為該類(lèi)的一個(gè)實(shí)例

  public stdclass newInstance(mixed* args)

  //創(chuàng)建該類(lèi)實(shí)例

  public ReflectionClass getParentClass()

  //取得父類(lèi)

  public bool isSubclassOf(ReflectionClass class)

  //測(cè)試傳入的類(lèi)是否為該類(lèi)的父類(lèi)

  public array getStaticProperties()

  //取得該類(lèi)的所有靜態(tài)屬性

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

  //取得該類(lèi)的靜態(tài)屬性值,若private,則不可訪問(wèn)

  public void setStaticPropertyValue(string name, mixed value)

  //設(shè)置該類(lèi)的靜態(tài)屬性值,若private,則不可訪問(wèn),有悖封裝原則

  public array getDefaultProperties()

  //取得該類(lèi)的屬性信息,不含靜態(tài)屬性

  public bool isIterateable()

  public bool implementsInterface(string name)

  //測(cè)試是否實(shí)現(xiàn)了某個(gè)特定接口

  public ReflectionExtension getExtension()

  public string getExtensionName()

  }

  ?>

  工廠模式應(yīng)用:

  [php]

  class MoveDataFactory

  {

  /**

  * Description:簡(jiǎn)單工廠模式,根據(jù)mode選取不同實(shí)例化對(duì)象

  * @return 對(duì)象實(shí)例

  */

  public function GetMoveClass($classname)

  {

  $reflectionclass = new ReflectionClass($classname);

  return $reflectionclass->newInstance();

  }

  }

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專(zhuān)業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專(zhuān)注高端品質(zhì)開(kāi)發(fā)
  • 返回頂部