数码资讯
PHP注释:AOP的应用
介绍 您以前听说过AOP(面向方面编程)吗虽然在PHP中似乎没有太多用处,但是AOP在企业级开发中被广泛使用。 本文主要阐述了AOP的概念。 什么是AOP 在应用程序开发中,我们经常发现需要许多功能。这些功能需要分散在代码中的多个点上,但这些点实际上与实际业务无关。我们称这些特殊字符为横切关注点。让
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
介绍
您以前听说过AOP(面向方面编程)吗虽然在PHP中似乎没有太多用处,但是AOP在企业级开发中被广泛使用。
本文主要阐述了AOP的概念。
什么是AOP
在应用程序开发中,我们经常发现需要许多功能。这些功能需要分散在代码中的多个点上,但这些点实际上与实际业务无关。我们称这些特殊字符为横切关注点。让我们通过维基百科了解横切关注点(横向关系)的定义。
在计算机科学中,横切关注点指的是切削表面(或方向)的编程,这些关系不能从其他系统(框架设计或实现)中分解,因此,代码复制发生,系统中存在显著的依赖关系,或者两者都存在。
现在你应该对水平关系有一个基本的了解。让我们看看代码中的内容。
假设一个场景,你是一个博客站点的编辑,你需要登录到站点,然后创建文章,验证帖子,编辑文章等等。如果你没有登陆,你应该直接登陆界面。为了确保这些操作是安全的,上面的任何操作都需要有效的验证,代码如下所示。
复制代码代码如下所示:
< PHP
班级博客ci_controller延伸
{
公共函数createPost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
信息::notifyadmin();
}
}
公共功能approvepost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
}
}
公共功能editpost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
}
}
公共功能viewpost(){
…
}
}
看看上面的代码,你会发现你的电话checkauthentication()之前的各种方法,因为行为需要用户登录才能完成。有(notifyadmin)确定的管理员帐户,创建一个新的。看到没有,有很多重复的代码,和博文类应该只负责管理后,识别身份的识别应该分开。我们违反了单一职责原则。
单一责任原则是,每一个班级都应该只有一个责任(任务),整个责任应该被封装在一个类中,所有的服务都应该以严格和平衡的方式分配。
到目前为止,我们已经理解了AOP所表达的东西,横向切向关系被放在一个组中,我们把这个类叫做切线,把横向剪切关系从我们的核心代码中分离出来的过程叫做面向方面编程。
AOP的专业术语
有很多条件专门用来解释AOP的特性,了解这些条件将是您成功地将AOP集成到项目中的关键。
方面
建议
连接点
切入点
我们了解了什么是!现在让我们看看其他三个条件是什么意思。
通知(通知)
建议用于调用方面(切割面),正如它的名字所暗示的,建议是用来定义什么和何时在一定的情况下做的。在前面的例子中,checkauthentication(做什么)的建议(通知),应在规定的方法执行的代码称为。
连接点(接入点)
点是在我们创造的建议应用的位置。看着前面的代码,你会发现我有几个函数调用不到业务逻辑直接相关。createPost(),例如,横切关注点应该在认证逻辑执行发生的消息发送到管理员这些都可以接入点。
在应用程序代码中,访问点可以放置在任何位置。
Pointcut(刃)
点切割定义了一种将通知与某些访问点匹配的方法。虽然我们的应用程序中只有一对访问点,但在应用程序中,您可以放置数千个访问点,也不需要将通知应用到所有访问点。
假设我们想通知createpost()(),()和()approvepost editpost,但现在没有viewpost()。我们使用的一些方法,结合这三种方法来通知。然后我们创建一个XML文件,包含了削减的细节,其中包括一些正则表达式匹配接入点。
概要:当我们的应用程序中存在水平输入关系时,我们可以创建一个切点平面,它在选择切点的一些访问点上应用通知函数。
AOP通知类型
通知代码可以用多种方式执行,正如我前面提到的,这些通知代码依赖于您所使用的框架,但您需要熟悉的一些类型,请看下面的代码:
事先通知
返回后通知
通知后扔
外周的通知
事先通知
在代码中的某些特殊点之前使用通知——调用方法是正常的。
到目前为止,为了简化概念,让你明白你的代码更快,我经常写通知的方法,但在实际环境中,往往没有书面通知的方法。应该有一个独立的控制器,该控制器在每个方法,每种方法是包裹在AOP功能。全球控制器运行在整个系统中,对于我们是不可见的。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
认证::checkauthentication();
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
}
}
在这里,我们假设有一个主要是用来告诉你什么是真正发生在这个类的类。假设controlpaths方法是应用全球的切入点,每一个方法在访问应用程序需要通过这种方法来访问。在上述方法中,我们打电话通知checkauthentication()执行每个方法之前,这是事先通知。
返回后通知
此通知只在指定的函数执行后执行一次,并返回访问点:
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
数据库::密切相关();
}
}
注意这里的C++复制代码,当方法完成时,我们清理数据库资源。在返回通知之后,我们调用这个通知。
抛出异常后通知
如果该函数在执行过程中抛出异常,则在抛出异常后应用该通知。当抛出异常时,该通知将成为一个假提示。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
{试
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
}
捕获(异常E){
错误::reporterror();
}
}
}
外周的通知
第四种通知是一种外围通知,它是先前通知和返回通知的组合。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
记录器::startlog();
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
记录器::endlog();
}
}
您以前听说过AOP(面向方面编程)吗虽然在PHP中似乎没有太多用处,但是AOP在企业级开发中被广泛使用。
本文主要阐述了AOP的概念。
什么是AOP
在应用程序开发中,我们经常发现需要许多功能。这些功能需要分散在代码中的多个点上,但这些点实际上与实际业务无关。我们称这些特殊字符为横切关注点。让我们通过维基百科了解横切关注点(横向关系)的定义。
在计算机科学中,横切关注点指的是切削表面(或方向)的编程,这些关系不能从其他系统(框架设计或实现)中分解,因此,代码复制发生,系统中存在显著的依赖关系,或者两者都存在。
现在你应该对水平关系有一个基本的了解。让我们看看代码中的内容。
假设一个场景,你是一个博客站点的编辑,你需要登录到站点,然后创建文章,验证帖子,编辑文章等等。如果你没有登陆,你应该直接登陆界面。为了确保这些操作是安全的,上面的任何操作都需要有效的验证,代码如下所示。
复制代码代码如下所示:
< PHP
班级博客ci_controller延伸
{
公共函数createPost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
信息::notifyadmin();
}
}
公共功能approvepost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
}
}
公共功能editpost(){
如果(!认证::checkauthentication()){
要登录/重定向
}
{其他
/继续
}
}
公共功能viewpost(){
…
}
}
看看上面的代码,你会发现你的电话checkauthentication()之前的各种方法,因为行为需要用户登录才能完成。有(notifyadmin)确定的管理员帐户,创建一个新的。看到没有,有很多重复的代码,和博文类应该只负责管理后,识别身份的识别应该分开。我们违反了单一职责原则。
单一责任原则是,每一个班级都应该只有一个责任(任务),整个责任应该被封装在一个类中,所有的服务都应该以严格和平衡的方式分配。
到目前为止,我们已经理解了AOP所表达的东西,横向切向关系被放在一个组中,我们把这个类叫做切线,把横向剪切关系从我们的核心代码中分离出来的过程叫做面向方面编程。
AOP的专业术语
有很多条件专门用来解释AOP的特性,了解这些条件将是您成功地将AOP集成到项目中的关键。
方面
建议
连接点
切入点
我们了解了什么是!现在让我们看看其他三个条件是什么意思。
通知(通知)
建议用于调用方面(切割面),正如它的名字所暗示的,建议是用来定义什么和何时在一定的情况下做的。在前面的例子中,checkauthentication(做什么)的建议(通知),应在规定的方法执行的代码称为。
连接点(接入点)
点是在我们创造的建议应用的位置。看着前面的代码,你会发现我有几个函数调用不到业务逻辑直接相关。createPost(),例如,横切关注点应该在认证逻辑执行发生的消息发送到管理员这些都可以接入点。
在应用程序代码中,访问点可以放置在任何位置。
Pointcut(刃)
点切割定义了一种将通知与某些访问点匹配的方法。虽然我们的应用程序中只有一对访问点,但在应用程序中,您可以放置数千个访问点,也不需要将通知应用到所有访问点。
假设我们想通知createpost()(),()和()approvepost editpost,但现在没有viewpost()。我们使用的一些方法,结合这三种方法来通知。然后我们创建一个XML文件,包含了削减的细节,其中包括一些正则表达式匹配接入点。
概要:当我们的应用程序中存在水平输入关系时,我们可以创建一个切点平面,它在选择切点的一些访问点上应用通知函数。
AOP通知类型
通知代码可以用多种方式执行,正如我前面提到的,这些通知代码依赖于您所使用的框架,但您需要熟悉的一些类型,请看下面的代码:
事先通知
返回后通知
通知后扔
外周的通知
事先通知
在代码中的某些特殊点之前使用通知——调用方法是正常的。
到目前为止,为了简化概念,让你明白你的代码更快,我经常写通知的方法,但在实际环境中,往往没有书面通知的方法。应该有一个独立的控制器,该控制器在每个方法,每种方法是包裹在AOP功能。全球控制器运行在整个系统中,对于我们是不可见的。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
认证::checkauthentication();
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
}
}
在这里,我们假设有一个主要是用来告诉你什么是真正发生在这个类的类。假设controlpaths方法是应用全球的切入点,每一个方法在访问应用程序需要通过这种方法来访问。在上述方法中,我们打电话通知checkauthentication()执行每个方法之前,这是事先通知。
返回后通知
此通知只在指定的函数执行后执行一次,并返回访问点:
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
数据库::密切相关();
}
}
注意这里的C++复制代码,当方法完成时,我们清理数据库资源。在返回通知之后,我们调用这个通知。
抛出异常后通知
如果该函数在执行过程中抛出异常,则在抛出异常后应用该通知。当抛出异常时,该通知将成为一个假提示。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
{试
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
}
捕获(异常E){
错误::reporterror();
}
}
}
外周的通知
第四种通知是一种外围通知,它是先前通知和返回通知的组合。
复制代码代码如下所示:
< PHP
类pathcontroller
{
功能controlpaths($名,$ funcname){
记录器::startlog();
classobj美元=新的类名(美元);
classobj美元-> funcname(美元);
记录器::endlog();
}
}
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。