下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

php语言中的反射类简介

作者:课课家教育     来源: http://www.kokojia.com点击数:729发布时间: 2016-01-08 17:34:37

标签: php语言php反射php开发

大神带你学编程,欢迎选课

  课课家这篇文章主要介绍了php利用反射实现插件机制的方法,涉及php反射机制与插件的实现技巧,需要的朋友可以参考下

php语言中的反射类简介_php_课课家

  本文实例讲述了php利用反射实现插件机制的方法。分享给大家供大家参考。具体实现方法如下:

   <?php

  /**

  * @name PHP反射API--利用反射技术实现的插件系统架构

  */

  interface Iplugin{

  public static function getName();

  }

  function findPlugins(){

  $plugins = array();

  foreach (get_declared_classes() as $class){

  $reflectionClass = new ReflectionClass($class);

  if ($reflectionClass->implementsInterface('Iplugin')) {

  $plugins[] = $reflectionClass;

  }

  }

  return $plugins;

  }

  function computeMenu(){

  $menu = array();

  foreach (findPlugins() as $plugin){

  if ($plugin->hasMethod('getMenuItems')) {

  $reflectionMethod = $plugin->getMethod('getMenuItems');

  if ($reflectionMethod->isStatic()) {

  $items = $reflectionMethod->invoke(null);

  } else {

  $pluginInstance = $plugin->newInstance();

  $items = $reflectionMethod->invoke($pluginInstance);

  }

  $menu = array_merge($menu,$items);

  }

  }

  return $menu;

  }

  function computeArticles(){

  $articles = array();

  foreach (findPlugins() as $plugin){

  if ($plugin->hasMethod('getArticles')) {

  $reflectionMethod = $plugin->getMethod('getArticles');

  if ($reflectionMethod->isStatic()) {

  $items = $reflectionMethod->invoke(null);

  } else {

  $pluginInstance = $plugin->newInstance();

  $items = $reflectionMethod->invoke($pluginInstance);

  }

  $articles = array_merge($articles,$items);

  }

  }

  return $articles;

  }

  class MycoolPugin implements Iplugin {

  public static function getName(){

  return 'MycoolPlugin';

  }

  public static function getMenuItems(){

  return array(array('description'=>'MycoolPlugin','link'=>'/MyCoolPlugin'));

  }

  public static function getArticles(){

  return array(array('path'=>'/MycoolPlugin','title'=>'This is a really cool article','text'=> 'xxxxxxxxx' ));

  }

  }

  $menu = computeMenu();

  $articles = computeArticles();

  print_r($menu);

  print_r($articles);

  希望本文所述对大家的php程序设计有所帮助。

赞(28)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程