您好,欢迎访问一九零五行业门户网

PHP语言动态特性

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
其它类似信息

推荐信息