PHP面向方面编程的实现.pdf

上传人:qwe****56 文档编号:70006841 上传时间:2023-01-14 格式:PDF 页数:4 大小:243KB
返回 下载 相关 举报
PHP面向方面编程的实现.pdf_第1页
第1页 / 共4页
PHP面向方面编程的实现.pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《PHP面向方面编程的实现.pdf》由会员分享,可在线阅读,更多相关《PHP面向方面编程的实现.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

15、O P 类,二是用户类名、类方法名必须遵循某个规范。这使得方面功能类不能“透明”、“无侵人”地插入到用户源代码中。改进后的A O P 实现技术使用P H P 扩展库中R U N K I T 类的一些方法,主要有r u n k i t c l a s s a d o p t 和r u n k i t m e t h o d r e n a m e 这两个方法,前者是在运行时把一个类做为另一个类的父类,同时继承父类的方法,后者可以在运行时动态改变方法名。通过这两个方法,可以去掉刚才提到的两点限制。在采用A O P 技术的程序运行过程中,利用A O P类的c a l l 魔术方法实现目标对象方法拦截

16、,取得程序控制流程权,然后在连接点处插入方面代码并执行,最后返回原控制流程继续执行。3 实例分析通过一个简单的实例来演示,在P H P 开发中如何应用A O P 技术。例子中包含的文件如表2 所示,文件作用描述如下:t a r g e t p h p 是目标类文件,即运行中所产生的目标对象被增强。c o r l c e r r l p h p 是实现系统横切关注点功能的代码文件,如日志记录、安全性检查等功能,这里为简单起见,代码并无实际意义。a s p e c t x m l 文件主要描述了把哪些关注点代码增强到目标对象的切入点上,它是一个配置文件,无需执行。万方数据第2 2 卷第1 0 期电

17、脑开发与应用(总7 8 5)2 5 表l配置文件格式和A O P 实现伪代码配置文件A O P 实现伪代码f o r e a c hx m l 一 方面 o a s 方面f o r e a c h 方面-切入点a s 切入点 i f(切人点一 类名=当前对象所属类名)i f(目标方法i n 切入点 方法列表)s w i t c h 增强类型:前增强:p r ef u n c t i o n s 一方法 p r e o b j s =类后增强:a f t e rf u n c t i o n s =类:方法a l t e ro b j s =类 环绕增强:p r ef u n c t i o n

18、 s 一方法p r eo b j s =类a f t e rf u n c t i o n s =类:方法a f t e ro b j s =类替换:目标方法=类:方法f o r e a c hp r e f u n c t i o n s p r eo b j s i 一 p r ef u n c t i o n s i (参数)t h i s 一 目标方法f o r e a c ha f t e rf u n c t i o n s a f t e r o b j s E i 一 a f t e r f u n c t i o n s i (参数)2 4A O P 实现原理表2 实例代码t

19、 a r g e t p hp c o n c e r n p h pa s p e c t x m l?p h pr e q u i r e“A O P p h p“I T e s t c l a s sT a r g e tf?p h pp u b l i cf u n c t i o nf l($a)c l a s sC o n c e r n fp u b l i cf u n c t i o np r e()T a r g e t f l e c h o”f u n c t i o n l=”$a;a f t e r)e c h o”p r e!”;C o n c e r n:a f

20、 t e r p u b l i cf u n c t i o nf 2()fp u b l i cf u n c t i o na f t e r()e c h o”f u n c t i o n 2:e c h o“a f t e r!”1 T a r g e t f 2)p r e$tn e wT a r g e t();)C o n c e r n:p r e$t 一 f l(1),?$t 一 f 2();?准备好所有的源代码后,执行t a r g e t p h p,结果显示为:p r e!f u n c t i o nl=lf u n c t i o n 2a f t e r!可见

21、结果符合预期。因为此例只是单纯演示A O P编程用法,并无实际意义。实际软件开发中可以对目标对象进行具体功能的增强。4 结束语目前对A O P 的研究逐渐受到软件工程界的重视,学术界从理论角度对A O P 的研究和发展趋势进行了深入探讨,工业界则从实践角度给出了很多支持A O P(下转第3 0 页)万方数据3 0(总7 9 0)L D A P 协议在高校媒体资产管理系统中的应用研究所有用户条目都被置于O U p e o p l e 分支节点下。u i d属性是每一个用户条目的唯一标志符。每一个用户条目还应包括c n、u s e r T y p e、g e n d e r、b i r t h d

22、 a y、m a i l、t e l e p h o n e 等一些常用属性,以方便用户管理及应用系统调用等。2 4 基于统一身份认证的单点登录统一身份认证系统通过统一的用户身份认证信息管理,避免了在各个应用系统的身份信息数据库的数据同步更新,用户只须在统一身份认证系统中注册或更改自己的认证信息即可,保证了数据的完整性,消除了不一致性,减少了数据冗余,同时避免了各个应用系统的重复开发。同时,系统实现了基于多个应用系统的单点登录,这将极大地方便用户使用,提高系统的易用性。2 5目录操作的实现L i n u x 平台下的O p e n L D A P 服务十分轻巧,适合用于应用开发与系统,而且在U

23、 n i x L i n u x 下,相关应用文档非常丰富。本论文是在L i n u x 平台下使用A p a c h e+O p e n L D A P 技术组合,基于P H P 技术实现对L D A P 协议的操作与系统集成。P H P 技术实现L D A P 目录协议操作的方法如下:建立L D A P 连接d s$d s=l d a pc o n n e c t(”S e r v e r N a r e a:p o r t s”);绑定用户信息$d n=”c n=e u c n e d u e n,O s u p e r a d m i n”;搜索用户信息$s r-l d a p s e

24、 a r c h($d s,”o=t e a c h e r l”,”c n-一-c u c n e d u e n“,a r r a y(”c n”,”u s e r p a s s w o r d“,”l o c a t i o n”);添加用户(i n f o 为用户信息)l d a pa d d($d s,”c n 一”$i n f o ”e n”,O=s u p e r a d m i n”,$i n f o);删除用户”c n=C 1 I C n e d u c n 0=修改用户资料(i n f o 为用户信息)l d a p m o d i f y($d s,$d n,$i n

25、f o);关闭连接l d a p c l o s e($d s);3 结束语L D A P 以其简单易用和跨平台的特性逐渐被越来越多的用于解决信息化建设中的系统集成问题,本文在分析媒体资产管理系统的需求和传统身份认证系统的缺点的基础上,提出了基于L D A P 的统一身份认证模型,分析了L D A P 的四种基本模型,设计了一种统一身份认证系统,采用分布式结构存储用户信息,使用户和管理员能够更加方便快捷的使用和管理网络中的应用系统。1-4 3 5 参考文献吴晓斌。张月琳基于L D A P 的校园网统一身份认证系统设计 J 华中科技大学学报(自然科学版),2 0 0 3,3 1(增刊):3 3

26、2 3 3 4 J H D E,M o r g a n r L i g h t w e i g h tD i r e c t o r yA c c e s sP r o t o c o l(v 3):T e c h n i c a lS p e c i f i c a t i o n M E n g:S n,2 0 0 2 T u t t l e s E h l e n b e r g e r a,G o r t h i re ta 1 U n 2 d eR s t a n d i n gL D A PD e s i g na n dI m p l e m e n t a t i o n M

27、E n g:s n,2 0 0 4 吴海涛,郭丽红轻量级目录访问协议分析与安全检测 J 南京工程学院报,2 0 0 5,3(1):5 0 5 2 张哲军,翟育明基于验证中心的单点登陆模型研究 J 福建电脑,2 0 0 6(1 1):1 0 5 一1 0 6(上接第2 5 页)的编程模型和开发框架,并成功地应用到实际的软件开发中。需要强调的一点是,面向方面编程是对面向对象编程模式的有益补充,目的是提高软件系统的可理解性、复用性和可扩展性。本文采用最流行的脚本语言P H P,在A O P 实现方面进行了有益的尝试。当然文中提出的A O P 实现还存在一些不足之处,例如方面代码的参数传递问题,对于参

28、数的传人,可以拦截对象方法的实参并传递给方面代码,也可以直接通过x m l 配置文件传人数据。对方面代码的结果数据传出,则需要进一步的考虑和处理。参考文献凌晨,陈芳莉面向方面程序设计技术f J 计算机系统应用,2 0 0 6(2):3 4 3 6 徐宝文,周超洪,周天琳等面向方面的程序设计:概念、实现与未来口 计算机与数字工程,2 0 0 5,3 3(8):1 一1 0 R o dJ o h n s o n,J u e r g e nH o e l l e r,J a v a E y e J2 E ED e v e l o p m e n tW i t h o u tE J B M 北京:电子

29、工业出版社,2 0 0 5 N i u y o n g j i e A O P 技术介绍 E B O L h t t p:b l o g c s d n n e t n i u y o n g j i e c a t e g o r y 2 4 2 6 3 0 a s p x,2 0 0 6 0 9 2 6 J a c k s o nM i l l e r M o r eo nA s p e c tO r i e n t e dp h p R O L h t t p:j a x n o r g a r t i c l e 2 0 0 4 1 0 1 6 m o r e o n a s p e c t o r i e n t e d p h p,2 0 0 4 1 0 1 6 口心口nd心妒eeedb帅洲,hae万方数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁