PHP面向方面编程的实现.pdf
《PHP面向方面编程的实现.pdf》由会员分享,可在线阅读,更多相关《PHP面向方面编程的实现.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2 2 卷第1 0 期电脑开发与应用文章编号:1 0 0 3-5 8 5 0(2 0 0 9)1 0-0 0 2 3 0 4P H P 语言中的面向方面编程实现A s p e c t-O r i e n t e dP r o g r a m m i n gi nP H P金海波(太原科技大学应用科学学院太原0 3 0 0 2 4)【摘要】面向方面编程(A O P)技术能够有效提高软件系统的可维护性、复用性和可扩展性,P H P 语言是当前最流行的脚本语言之一。分析了主流语言平台下的A O P 实现策略,提出了基于P H P 语言的A O P 实现目标和实现原理,还描述了应用A O P 技术的
2、软件系统结构和核心文件,并设计了相应的A O P 支持类。最后通过实例演示该A o P 技术的用法,程序结果表明该A O P 实现是有效的。【关键词】面向方面编程,P H P 语言,横切关注点,方面中图分类号:T P 3 1文献标识码:AA B S T R A C TA s p e c to r i e n t e dp r o g r a m m i n g(A O P)t e c h n o l o g yc a ne f f e c t i v e l yi m p r o v et h em a i n t a i n a b i l i t y r e u s a b i l i t
3、 y,e x p a n s i b i l i t yo fs o f t w a r es y s t e m,P H Pi so n eo fc u r r e n tp o p u l a rs c r i p tl a n g u a g e s T h i sp a p e ra n a l y z e di m p l e m e n t a t i o ns t r a t e g yo fA O Pi nm a i n s t r e a ml a n g u a g ep l a t f o r m s,p r o p o s e di m p l e m e n t a
4、t i o np u r p o s ea n di m p l e m e n t a t i o np r i n c i p l eo fA O Pi nP H Ps c r i p tl a n g u a g e,a l s od e s c r i b e ds o f t w a r es y s t e ms t r u c t u r ea n dc o r ef i l e s,d e s i g n e dac o r r e s p o n d i n gc l a s so fA O P F i n a l l y,W ed e m o n s t r a t e d
5、h o wt oa p p l yA O Pt e c h n o l o g yb yu s i n ge x a m p l ec o d e,t h er e s u l t ss h o wt h a tA O Pi m p l e m e n t a t i o ni se f f e c t i v e K E Y W O R D Sa s p e c to r i e n t e dp r o g r a m m i n g,P H Pl a n g u a g e,c r o s s c u t t i n gc o n c e r n,a s p e c t上世纪八十年代出现
6、的面向对象程序设计技术极大提高了软件系统的可读性、复用性和可扩展性,但面向对象技术并没有从本质上解决软件系统的可复用性。现实问题中存在着许多横切关注点,比如安全性检查、日志记录、性能监控等,它们的实现代码和其他业务逻辑代码混杂在一起,并散落在软件不同地方,这使得软件系统的可维护性和复用性受到极大限制,由此产生了面向方面编程(A O P)技术。这种编程模式抽取出散落在软件系统各处的横切关注点代码,并模块化,归整到一起,这样进一步提高软件的可维护性、复用性和可扩展性。近年来很多学者也提出了有关A O P 的各种文献 1 z 3,很多软件厂商也发布了各种优秀的支持A O P 的编程模型和框架,并且已
7、经在实际的软件开发中得到应用。本文首先介绍A O P 的一些基础概念,并描述了当前流行的J A V A 语言平台和N E T 技术平台下的A O P 实现策略 3“。然后分析了P H P 语言的特点和支持A O P 的可行性,提出基于P H P 语言的A O P 实现目标和具体实现策略,并介绍了核心伪代码和配置文件格式。本文侧重于A O P 在实际P H P 开发中的可操作性,最后引入具体实例进行分析。l面向方面编程基本理论1 1 基本概念如关注点:表示系统中一个特定的问题、概念。例如调用对象方法时,通常要进行安全性检查,“安全性”可反映为关注点,另外,事务管理、性能监控也是系统中常见的关注点
8、。横切关注点:如果一个关注点的实现代码散落在很多个类或方法之中,称为“横切关注点”。方面:方面指对一个横切关注点的模块化,将系统中散落在各处的、用于实现这个关注点的代码归整到一处。连接点:程序执行过程中的一个点,通常是方法调用前后或字段访问时。增强:在特定连接点执行的动作,增强一般通过拦截器的形式来表现,增强分前增强、后增强、环绕增强。前增强表示在连接点调用之前,首先调用增强。例如安全性检查属于前增强,事务处理属于环绕增强,日志记录属于后增强。切入点:一组连接点的总称,用于指定某个增强应该在何时被调用。切入点常用正则表达式或别的通配符语法来描述,有些A O P 实现技术还支持切入点的组合。目标
9、对象:包含连接点的对象,也就是被增强的类。织入:将方面整合到完整的执行流程中。1 2 常见的A O P 实现策略首先介绍主流的J A V A 语言和N E T 技术平台中的一些A O P 实现技术,然后介绍P H P 语言的特点和典型的A O P 实现,指出其A O P 实现存在的不足之*2 0 0 9 0 6 1 7 收到,2 0 0 9 0 8 2 1 改回*金海波,男,1 9 8 0 年生,硕士,助教,研究方向:软件工程、数据挖掘。万方数据P H P 语言中的面向方面编程实现处。目前在J A V A 语言中实现A O P 的方式有以下几种,一是采用动态代理,使用J A V A l 3 引
10、入的语言结构,优点是除了A O P 框架之外不需要第三方库,缺点是它只能针对接口进行代理。二是采用动态字节码生成技术,例如C G L I B,它可以针对指定的类动态生成一个子类,并覆盖其中的方法,从而实现方法拦截。三是采用语言扩展,这是一种静态织入方式,它需要对J A V A 语言进行语法扩展,例如A s p e c t J 就是对J A v A 的A O P 扩展。目前在N E T 下实现A O P 的方式分为两大类n :一是采用动态代理技术,利用截取消息的方式,对该消息进行封装,以取代或修饰原有对象行为的执行。动态代理实现方式利用N E T 的A t t r i b u t e 和N E
11、TR e m o t i n g 的代理技术,对对象执行期间的上下文消息进行截取,并以消息传递的方式执行,从而可以在执行期间加入相关处理逻辑实现方面的功能。二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编泽期间织入有关“方面”的代码。而静态织人的方式实现一般利用第三方框架提供特定的语法,从而实现A O P。作为一种流行的脚本语言,P H P 在服务器端开发领域获得了极大的成功,P H P 的面向对象编程技术也在不断的完善当中,目前关于P H P 的软件构架和编程模式的资料还非常少,程序员一般使用P H P 的过程化方式快速开发程序,这不利于大型软件系统的开发,所以研究
12、P H P 语言的软件构架技术是非常必要的。对于基于P H P 语言进行A O P 实现,因为P H P 是解释型语言,不需编译执行,所以P H P 语言中的A O P 实现多采用动态代理技术,这里介绍一种典型的实现技术 5 :用户把需要A O P 功能的对象做为一个子类,继承事先定义好的A O P 代理类,再利用代理类中的c a l l 魔术方法完成A O P 功能的实现。这样做的缺点是A O P 代码对用户源代码有明显的侵人性,例如用户类要显式继承A O P 代理类,用户类名、类方法名必须加以限制等。2P H P 语言中的A O P 实现2 1 实现目标结构清晰;采用A O P 技术,软件
13、系统结构必须逻辑清晰、可理解、易扩展,把横切关注点功能“透明”、“无侵入”地插入业务逻辑代码中。标准性;对方面、连接点、增强、切入点等功能的描述用标准X M L 文档描述。这有利于不同系统间的文档交换。简单性;P H P 特点是简单易学,适合快速开发,因此A O P 实现技术应该继承P H P 语言的优点,提供给用户简单的使用方式。2 2 软件系统结构采用A O P 技术的P H P 软件系统分三部分:用户类文件、A O P 实现类和配置文件、方面功能类文件。其中用户类文件是软件系统的主要部分,它采用面向对象编程技术实现了大部分系统功能。而方面功能类文件实现了横切关注点的功能,例如系统中的安全
14、性检查、日志记录、性能监控等。A O P 实现部分只有一个类和配置文件,是用户类和方面功能类之间的粘合剂,它在程序动态运行中把横切关注点功能代码“透明”地、“无侵入”地插入到用户类中。2 3 核心文件说明表1 列出了配置文件格式和A O P 实现类的核心伪代码,为了增加代码可读性,用中文表示部分代码。配置文件中,增强类型分前、后、环绕、替换增强类型,方面代码用(类:方法)来表示。A O P 实现伪代码中的x m l 结构表示配置对象,用x m l 的属性表示配置文件中的各种信息。分析此前的P H P 语言中A O P 实现存在的一些问题,主要是对用户源代码有两点限制:一是用户类必须显式继承A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 面向 方面 编程 实现
限制150内