• 技术文章 >php教程 >php手册

    PHP语言动态特性

    2016-06-06 19:51:00原创475

    PHP语言动态特性的更多用例 下面的例子类似面向切面编程,其和面向对象不同的地方在于,面向对象关注于每个对象定义的完整性, 而切面是关注于整个对象系统的某个/某些特定功能面,比如日志、过滤等,把这些特定功能面剥离出来达到共用的目的。 Listing 8.

    PHP语言动态特性的更多用例

    下面的例子类似面向切面编程,其和面向对象不同的地方在于,面向对象关注于每个对象定义的完整性,

    而切面是关注于整个对象系统的某个/某些特定功能面,比如日志、过滤等,把这些特定功能面剥离出来达到共用的目的。


    Listing 8. 简单的User类

    name = $value;
      }
    
      function get_name()
      {
        return $this->name;
      }
    }
    
    $c1 = new User();
    $c1->set_name( "Jack" );
    $name = $c1->get_name();
    echo( "name = $name\n" );
    ?>

    这个对象足够简单,现在如果想在用户名字设置或读取的时候记录日志,该怎么做?

    你可以创建一个动态的日志处理对象,把这个用户对象包装在其中,这样看起来用户对象的动作都会通知到其包装日志类一样。


    Listing 9. 动态包装类
    obj,$method), $args );
      }
    
      function __construct( $obj )
      {
        $this->obj = $obj;
      }
    }
    
    $c1 = new Logged( new User() );
    $c1->set_name( "Jack" );
    $name = $c1->get_name();
    echo( "name = $name\n" );
    ?>

    调用代码还是一样,但这一次,任何对User方法的访问,都会被echo出来。(你可以把echo替换其他的逻辑,如安全控制、日志记录、数据过滤等)

    就好比在User对象的方法被调用时被某个钩子函数给挂载了,进行了预处理或后置处理。


    by iefreer

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Win7(32位)+PHP+Apache+SQLServer2005环境配置 下一篇:PHP开发绝对不能违背的安全铁则
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 大型网站架构演变和知识体系• php获取从百度搜索进入网站的关键词的代码• 学习PHP重定向的三种方法• 完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题• PHP更新购物车数量(表单部分/PHP处理部分)
    1/1

    PHP中文网