第 14 章 AOP(Aspect Oriented Programming)

 
<?php

interface Account{
public function hello($str);
}

class Demo implements Account{
public function __construct(){}
public function hello($str = ""){
echo 'Hello: '.$str;
}
public function __destruct(){}
}

class Aop
{
    private $instance;

    public function __construct($instance){
        $this->instance = $instance;
    }
    public function __call($method, $argument){
        if(! method_exists($this->instance, $method)){
            throw new Exception('Undefine function: ' . $method);
        }

        /* 此处加入before代码 */

        $callBack = array($this->instance, $method);
        $return = call_user_func_array($callBack, $argument);

        /* 此处加入after代码 */

        return $return;
}
}

class Factory
{
public function __construct(){}
    public function getInstance(){
        return new Aop(new Demo());
    }
}

try
{
    $factory = Factory::getInstance();
$factory->hello('world');
}
catch(Exception $e)
{
    echo 'Caught exception: ',  $e->getMessage();
}

 

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-10-29 15:51:39

第 14 章 AOP(Aspect Oriented Programming)的相关文章

Aspect Oriented Programming杂谈

      至今Aspect Oriented Programming已经被开发人员所熟知,其简写AOP,译为面向方面编程(也有称面向切面编程).其产生于90年代Xerox PARC实验室编程范式.被称为oop的延续,oop主要针对业务处理过程的领域问题抽象封装,形成领域对象,更好的描述自然领域问题.而aop主要处理业务处理过程中处理逻辑步骤分离,减少业务逻辑的耦合性,是的我们的开发人员在开发过程中只需关心领域的核心实际逻辑.在结构化编程(SP)中提出了SOC(分离关注点),并一直被称为是面对复

Aspect Oriented编程杂谈

至今Aspect Oriented Programming已经被开发人员所熟知,其简写AOP,译为面向方面编程(也有称面向切面编程).其产生于90年代Xerox PARC实验室编程范式.被称为oop的延续,oop主要针对业务处理过程的领域问题抽象封装,形成领域对象,更 好的描述自然领域问题.而aop主要处理业务处理过程中处理逻辑步骤分离,减少业务逻辑的耦合性,是的我们的开发人员在开 发过程中只需关心领域的核心实际逻辑.在结构化编程(SP)中提出了SOC(分离关注点),并一直被称为是面对复杂软件最

第三章 AOP 基于Schema的AOP

        基于Schema定义的切面和前现两种方式定义的切面,内容上都差不多,只是表现形式不一样而已. 3.7.1一般增强的使用 a.目标类 public class Target { public void say(){ System.out.println("say..."); } public String getName(int id,String name){ System.out.println("getName..."); return &quo

jBPM-4.0中文开发指南-第14章 持久化

第 14 章 持久化 14.1. 标准环境配置 这一节描述了环境如何配置 来在标准Java环境中使用hibernate. 01 | <jbpm-configuration> 02 | 03 | <process-engine> 04 | <hibernate-session-factory /> 05 | <hibernate- configuration> 06 | <properties resource="hibernate.prope

《Kotin 极简教程》第14章 使用 Kotlin DSL

第14章 使用 Kotlin DSL 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程http://www.jianshu.com/p/35b487734339 我们在前面的章节中,已经看到了 Kotlin DSL 的强大功能.例如Gradle 的配置文件 build.gradle (Groovy),以及前面我们涉及到的Gradle Script Kotlin(Kotlin).Anko(Kotlin)

第三章 AOP 编程选择

         Spring为我们开发者提供了多种AOP的编程方式.我们该如何选择呢? 如果项目采用的是JDK5.0以上版本,我们可以选择@AspectJ的方式.这是第一选择. http://blog.csdn.net/p_3er/article/details/9268637 如果使用的是低版本的JDK,那么可以考虑使用<aop:aspect>,也就是Schema的方式. http://blog.csdn.net/p_3er/article/details/9269407 如果需要一些特殊

使用spring aop aspect为什么没有被调用

使用spring aop aspect为什么没有被调用? 我在Java Web项目中使用到了spring 的aop,记录用户连续登录失败的次数,如果连续登录失败的次数达到3次,则在当前 时间段内禁止登录. aop的配置如下: Xml代码   <aop:config>              <aop:pointcut id="userServicePointcut"               expression="execution(* com.sho

&amp;lt;&amp;lt;精通iOS开发&amp;gt;&amp;gt;第14章例子代码小缺陷的修复

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 首先推荐大家看这本书,整本书逻辑非常清晰,代码如何从无到有,到丰满说的很有条理. 说实话本书到目前为止错误还是极少的,不过人无完人,在第14章前半部分项目的代码中,作者在MasterVC到DetailVC中又直接添加了一个segue,该segue的ID为"masterToDetail",作用是当新建一个tinyPix文档时可以直接跳转到DetailV

《Android游戏编程入门经典》——第14章使用音频系统

第14章 使用音频系统Android游戏编程入门经典本章介绍如下内容: 使用媒体播放器组件播放音频:将音频文件添加到项目中:使用声音池组件播放音频:混合音频示例以响应触摸输入事件.本章将深入介绍Android设备播放视频游戏音乐和音效的音频系统.Android SDK通过SoundPool类支持音频系统,该类通过集成音频混合器加载和播放音频文件.Android SDK包含可轻松加载和播放多媒体内容的方法和类.您将了解如何加载音频资产并播放它们.音乐和音效文件会得到相同的待遇:尽管通常使用Medi