PHP通过反射动态加载第三方类和获得类源码的实例

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。