脚本宝典收集整理的这篇文章主要介绍了PHP通过反射动态加载第三方类和获得类源码的实例,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
用反射加载第三方类用处在于: 使用XML或其他配文件配置要加载的类,从而和系统源代码分离。 对加载的类进行类检查,是加载的类符合自己定义的结构。
abstract function execute();
}
class ModuleRunner {
PRivate $configData = array( #模拟xml配置,动态配置需要加载的Module
"PErsonModule" => array("person" => "bob"),"FtpModule" => array("host" => "example.COM","user" => "anon")
);
private $modules = array();
function inIT() { #初始化ModuleRunner,加载配置中的Module
$parent = new ReflectionClass("Module");
foreach($this->con<a href="https://www.js-code.com/tag/fig/" target="_blank" class="keywords">fig</a>Data as $moduleName => $params) { #检查配置中的Module是否合法
$moduleClass = new ReflectionClass($moduleName);
if(! $moduleClass->isSubclassOf($parent)) { #检查是否是Module的子类型
throw new Exception("unk<a href="https://www.js-code.com/tag/Now/" target="_blank" class="keywords">Now</a>n type : {$moduleName}");
}
$module = $moduleClass->newInstance();
foreach($moduleClass-><a href="https://www.js-code.com/tag/getmethod/" target="_blank" class="keywords">getmethod</a>s() as $method) { #检查配置中的<a href="https://www.js-code.com/tag/hanshu/" target="_blank" class="keywords">函数</a>的参数格式是否正确
$this->handleMothod($module,$method,$params);
}
array_push($this->modules,$module); #加载Module
}
}
private function handleMothod(Module $module,ReflectionMethod $method,$params) { #检查Module中的<a href="https://www.js-code.com/tag/fangfa/" target="_blank" class="keywords">方法</a>参数是</pre>
以上是脚本宝典为你收集整理的PHP通过反射动态加载第三方类和获得类源码的实例全部内容,希望文章能够帮你解决PHP通过反射动态加载第三方类和获得类源码的实例所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。