频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

php中访问对象protected成员的一种方法

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2008-6-28 10:10:37 进入讨论组
关 键 词: 成员 方法 对象 访问 class var function object static

/**
 * ZxProtectedAccessor
 *
 * ZxProtectedAccessor 提供了访问对象protected属性的途径。
 *
 * @copyright Copyright Zhenye Xie 2006. All rights reserved.
 * @author Zhenye Xie <xiezhenye@gmail.com>
 * @version 0.8
 * @package common
 */
class ZxProtectedAccessor {
    private static $classes=array();

    private static function generateAccessor($class){
        $accClass=self::getAccessorClassName($class);
        if(!class_exists($accClass)){
            $code='class '.$accClass.' extends '.$class.' { ';
            $code.='static function &_zx_get_var_($obj,$var){return $obj->$var;}';
            $code.='static function _zx_set_var_($obj,$var,$value){$obj->$var=$value;}}';
            eval($code);
        }
    }

    function &get($object, $var){
        $class=get_class($object);
        self::generateAccessor($class);
        $ret=call_user_func(array(self::getAccessorClassName($class),
            '_zx_get_var_'),$object,$var);
        return $ret;
    }

    function set($object, $var, $value){
        $class=get_class($object);
        self::generateAccessor($class);
        $ret=call_user_func(array(self::getAccessorClassName($class),
            '_zx_set_var_'),$object,$var,$value);
        return $ret;
    }

    private static function getAccessorClassName($className){
        return '_Zx_Protected_Accessor__'.$className;
    }
}欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱