PHP反射机制用法实例_php技巧

本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下:

演示示例代码如下所示:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function __construct() {
    $this->target[] = new ClassOne();
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->callClassOne();
?>

输出结果:

In Class One

可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。

同样的,如下的代码也是能够运行的:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function addObject($obj) {
    $this->target[] = $obj;
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->addObject(new ClassOne());
$obj->callClassOne();
?>

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 反射机制
用法
java反射机制实例、java反射机制、反射机制、c 反射机制、java反射机制详解,以便于您获取更多的相关知识。

时间: 2024-08-01 23:33:44

PHP反射机制用法实例_php技巧的相关文章

PHP的消息通信机制测试实例_php技巧

本文实例讲述了PHP的消息通信机制.分享给大家供大家参考,具体如下: <?php error_reporting(E_ALL&~E_WARNING&~E_NOTICE); /** * Example for sending and receiving Messages via the System V Message Queue * * To try this script run it synchron/asynchron twice times. One time with ?t

php过滤html标记属性类用法实例_php技巧

本文实例讲述了php 过滤html标记属性类及其用法.是PHP项目开发中比较常见的实用技巧.分享给大家供大家参考.具体方法如下: HtmlAttributeFilter.class.php类文件如下: <?php /** HTML Attribute Filter * Date: 2013-09-22 * Author: fdipzone * ver: 1.0 * * Func: * public strip 过滤属性 * public setAllow 设置允许的属性 * public set

PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例_php技巧

本文实例讲述了PHP中addslashes()和stripslashes()实现字符串转义和还原用法.分享给大家供大家参考,具体如下: PHP中addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL stripslashes() 函数删除由 addslashes() 函数添加的反斜杠. 用法示例如下: <?php $str="select * from `book` where bookname=

php类的定义与继承用法实例_php技巧

本文实例讲述了php类的定义与继承用法.分享给大家供大家参考.具体如下: <?php /* * class */ class people { public $name; public $age; function __construct($namec,$agec) { $this->name = $namec; $this->age = $agec; } protected function getmessage() { return "姓名:".$this->

PHP获取文件夹大小函数用法实例_php技巧

本文实例讲述了PHP获取文件夹大小函数用法.分享给大家供大家参考.具体如下: <?php // 获取文件夹大小 function getDirSize($dir) { $handle = opendir($dir); while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { if(is_dir(

php的curl封装类用法实例_php技巧

本文实例讲述了两个php curl封装类的用法实例,这两个函数可以让我们非常的方便的使用php curl相关函数.分享给大家供大家参考.具体如下: 使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll) 开启php curl函数库的步骤 1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini

php获得网站访问统计信息类Compete API用法实例_php技巧

本文实例讲述了php获得网站访问统计信息类Compete API用法.分享给大家供大家参考.具体如下: 这里使用php获得网站访问统计信息类Compete API,Compete是一个专门用来统计网站信息的网站 <?php // Check for dependencies if (!function_exists('curl_init')) throw new Exception('Compete needs the CURL PHP extension.'); if (!function_e

php类的扩展和继承用法实例_php技巧

本文实例讲述了php类的扩展和继承用法.分享给大家供大家参考.具体如下: <?php class Thread { var $topic; //帖子主题 var $body; //帖子内容 var $date; //帖子发布时间 var $author; //帖子作者 //函数Thread用于初始化变量等 function Thread() { //初始化变量 } //函数Send用于提交新帖子 function Send() { //检测变量的合法性后执行插入操作将变量存储到数据库中 } //

php文件压缩之PHPZip类用法实例_php技巧

本文实例讲述了php文件压缩之PHPZip类用法.分享给大家供大家参考.具体如下: <?php // // PHPZip v1.2 by Sext (sext@neud.net) // // Makes zip archive // // Based on "Zip file creation class", uses zLib // // class PHPZip { function Zip($dir, $zipfilename) { if (@function_exists