線上服務咨詢
Article/文章
記錄成長點滴 分享您我感悟
PHP反射api應為
發表時間:2019-07-30 16:17:56
文章來源:沈陽軟件開發
標簽:網站建設 小程序開發 小程序制作 微信小程序開發 公眾號開發 微信公眾號開發 網頁設計 網站優化 網站排名 網站設計 微信小程序設計 小程序定制 微信小程序定制
瀏覽次數:0
理解反思
它指的是PHP程序在PHP運行狀態下的擴展分析,導出或提取有關類,方法,屬性,參數甚至注釋的詳細信息。這種動態獲取的信息和動態調用對象的能力稱為反射API。 Reflection是一種在面向對象模型中操作元模型的API。它非常強大,可以幫助我們構建復雜,可擴展的應用程序。 (ps:包含在工廠模式中)
Reflection API是一個php內置的oop技術擴展,包括類,異常和接口,可用于幫助我們分析其他類,接口,方法,屬性和擴展。這些oop擴展稱為反射。
ReflectionClass
[PHP]
ReflectionClass類實現了Reflector
{
最終私人__clone()
公共對象__construct(字符串名稱)
公共字符串__toString()
公共靜態字符串導出()
//導出類的詳細信息
公共字符串getName()
//獲取類名或接口名稱
公共bool isInternal()
//測試該類是否是系統內部類
public bool isUserDefined()
//測試類是否是用戶定義的類
public bool isInstantiable()
//測試類是否已實例化
public bool hasConstant(string name)
//測試類是否具有特定常量
public bool hasMethod(string name)
//測試類是否有特定的方法
公共bool hasProperty(字符串名稱)
//測試類是否具有特定屬性
公共字符串getFileName()
//獲取定義類的文件名,包括路徑名
Public int getStartLine()
//獲取定義類
的起始行Public int getEndLine()
//獲取定義類
的結束行公共字符串getDocComment()
//獲取此類的注釋
Public ReflectionMethod getConstructor()
//獲取此類的構造函數信息
Public ReflectionMethod getMethod(string name)
//獲取類的具體方法信息
Public ReflectionMethod [] getMethods()
//獲取該類的所有方法信息
Public ReflectionProperty getProperty(字符串名稱)
//獲取特定的屬性信息
Public ReflectionProperty [] getProperties()
//獲取類的所有屬性信息
公共數組getConstants()
//獲取該類的所有常量信息
公共混合getConstant(字符串名稱)
//獲取該類的具體常量信息
Public ReflectionClass [] getInterfaces()
//獲取接口類信息
public bool isInterface()
//測試類是否是接口
公共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)
//測試傳遞的類是否是類的父類
公共數組getStaticProperties()
//獲取類的所有靜態屬性
公共混合getStaticPropertyValue(字符串名稱[,默認混合])
//獲取類的靜態屬性值,如果是私有的,則無法訪問
Public void setStaticPropertyValue(string name,mixed value)
//設置類的靜態屬性值,如果是私有的,則無法訪問,有包裝原則
公共數組getDefaultProperties()
//獲取類的屬性信息,沒有靜態屬性
公共bool isIterateable()
public bool implementsInterface(string name)
//測試是否實現了特定的接口
Public ReflectionExtension getExtension()
公共字符串getExtensionName()
}
?>
工廠模式應用:
[PHP]
類MoveDataFactory
{
/**
*描述:簡單工廠模式,根據模式選擇不同的實例化對象
* @return對象實例
*/
公共函數GetMoveClass($ classname)
{
$ reflectionclass=new ReflectionClass($ classname);
返回$ reflectionclass-> newInstance();
}
}
網站建設,小程序開發,小程序制作,微信小程序開發,公眾號開發,微信公眾號開發,網頁設計,網站優化,網站排名,網站設計,微信小程序設計,小程序定制,微信小程序定制