線上服務(wù)咨詢
Article/文章
記錄成長(zhǎng)點(diǎn)滴 分享您我感悟
您當(dāng)前位置>首頁(yè) > 知識(shí) > 網(wǎng)站建設(shè)
PHP反射api應(yīng)為
發(fā)表時(shí)間:2019-07-30 16:17:56
文章來(lái)源:沈陽(yáng)軟件開(kāi)發(fā)
標(biāo)簽:網(wǎng)站建設(shè) 小程序開(kāi)發(fā) 小程序制作 微信小程序開(kāi)發(fā) 公眾號(hào)開(kāi)發(fā) 微信公眾號(hào)開(kāi)發(fā) 網(wǎng)頁(yè)設(shè)計(jì) 網(wǎng)站優(yōu)化 網(wǎng)站排名 網(wǎng)站設(shè)計(jì) 微信小程序設(shè)計(jì) 小程序定制 微信小程序定制
瀏覽次數(shù):0
理解反思
它指的是PHP程序在PHP運(yùn)行狀態(tài)下的擴(kuò)展分析,導(dǎo)出或提取有關(guān)類,方法,屬性,參數(shù)甚至注釋的詳細(xì)信息。這種動(dòng)態(tài)獲取的信息和動(dòng)態(tài)調(diào)用對(duì)象的能力稱為反射API。 Reflection是一種在面向?qū)ο竽P椭胁僮髟P偷腁PI。它非常強(qiáng)大,可以幫助我們構(gòu)建復(fù)雜,可擴(kuò)展的應(yīng)用程序。 (ps:包含在工廠模式中)
Reflection API是一個(gè)php內(nèi)置的oop技術(shù)擴(kuò)展,包括類,異常和接口,可用于幫助我們分析其他類,接口,方法,屬性和擴(kuò)展。這些oop擴(kuò)展稱為反射。
ReflectionClass
[PHP]
ReflectionClass類實(shí)現(xiàn)了Reflector
{
最終私人__clone()
公共對(duì)象__construct(字符串名稱)
公共字符串__toString()
公共靜態(tài)字符串導(dǎo)出()
//導(dǎo)出類的詳細(xì)信息
公共字符串getName()
//獲取類名或接口名稱
公共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è)試類是否有特定的方法
公共bool hasProperty(字符串名稱)
//測(cè)試類是否具有特定屬性
公共字符串getFileName()
//獲取定義類的文件名,包括路徑名
Public int getStartLine()
//獲取定義類
的起始行Public int getEndLine()
//獲取定義類
的結(jié)束行公共字符串getDocComment()
//獲取此類的注釋
Public ReflectionMethod getConstructor()
//獲取此類的構(gòu)造函數(shù)信息
Public ReflectionMethod getMethod(string name)
//獲取類的具體方法信息
Public ReflectionMethod [] getMethods()
//獲取該類的所有方法信息
Public ReflectionProperty getProperty(字符串名稱)
//獲取特定的屬性信息
Public ReflectionProperty [] getProperties()
//獲取類的所有屬性信息
公共數(shù)組getConstants()
//獲取該類的所有常量信息
公共混合getConstant(字符串名稱)
//獲取該類的具體常量信息
Public ReflectionClass [] getInterfaces()
//獲取接口類信息
public bool isInterface()
//測(cè)試類是否是接口
公共bool isAbstract()
//測(cè)試該類是否為抽象類
public bool isFinal()
//測(cè)試該類是否被聲明為final
Public int getModifiers()
//獲取類的修飾符,返回值類型可以是資源類型
//通過(guò)Reflection:進(jìn)一步閱讀: getModifierNames($ class-> getModifiers())
public bool isInstance(stdclass object)
//測(cè)試傳入對(duì)象是否是類的實(shí)例
public stdclass newInstance(mixed * args)
//創(chuàng)建此類的實(shí)例
Public ReflectionClass getParentClass()
//獲取父類
public bool isSubclassOf(ReflectionClass class)
//測(cè)試傳遞的類是否是類的父類
公共數(shù)組getStaticProperties()
//獲取類的所有靜態(tài)屬性
公共混合getStaticPropertyValue(字符串名稱[,默認(rèn)混合])
//獲取類的靜態(tài)屬性值,如果是私有的,則無(wú)法訪問(wèn)
Public void setStaticPropertyValue(string name,mixed value)
//設(shè)置類的靜態(tài)屬性值,如果是私有的,則無(wú)法訪問(wèn),有包裝原則
公共數(shù)組getDefaultProperties()
//獲取類的屬性信息,沒(méi)有靜態(tài)屬性
公共bool isIterateable()
public bool implementsInterface(string name)
//測(cè)試是否實(shí)現(xiàn)了特定的接口
Public ReflectionExtension getExtension()
公共字符串getExtensionName()
}
?>
工廠模式應(yīng)用:
[PHP]
類MoveDataFactory
{
/**
*描述:簡(jiǎn)單工廠模式,根據(jù)模式選擇不同的實(shí)例化對(duì)象
* @return對(duì)象實(shí)例
*/
公共函數(shù)GetMoveClass($ classname)
{
$ reflectionclass=new ReflectionClass($ classname);
返回$ reflectionclass-> newInstance();
}
}
網(wǎng)站建設(shè),小程序開(kāi)發(fā),小程序制作,微信小程序開(kāi)發(fā),公眾號(hào)開(kāi)發(fā),微信公眾號(hào)開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計(jì),微信小程序設(shè)計(jì),小程序定制,微信小程序定制