Cakephp事件机制尝鲜

cakephp 很老的框架了,尝鲜算是牵强,不过就算很先进的框架例如YII都有这些机制,不过仍然没有理解

手册地址: http://book.cakephp.org/2.0/en/core-libraries/events.html

使用方式:

    

1、在需要支持事件的类中(包括、模型、控制器等)使用CakeEventListener 接口并且,实现接口规定的所有方法。
<?php
App::uses( ‘AppModel‘, ‘Model‘ );
App::uses(‘CakeEventListener‘, ‘Event‘);
class COrder extends AppModel implements CakeEventListener {

    public function implementedEvents() {
        return array(
            ‘Model.COrder.test‘ =>array(
                ‘callable‘=> ‘eventTest‘,
                ‘passParams‘=>true
            ),
        );
    }

    public function eventTest($order) {
        //TODO
        pr($order);exit();
    }

}
2、注册事件,注册事件可以在APPController中操作,全局注册所有的事件        // 注册事件
        $this->loadModel("COrder");
        $this->getEventManager()->attach($this->COrder);    
3、触发事件,在系统任意一个地方都可以使用触发事件机制,使用方法如下        //触发事件
        $event = new CakeEvent(‘Model.COrder.test‘, $this, array(
            ‘order‘ =>array(‘a‘)
        ));
        $this->getEventManager()->dispatch($event);

心得:使用事件机制可以在一定程度上解耦,不必每次都要去引入需要的额对象,例如在模型里面引入其他模型是不合适且不方便的,但是PHP的事件机制造成了程序代码不利于跟踪,程序可读性被破坏,同时也不能很好地进行事务操作。所以请谨慎使用cakePHP的事件机制。

时间: 2024-11-05 14:59:16

Cakephp事件机制尝鲜的相关文章

CoreOS那些事之Rkt容器尝鲜(上)

从CoreOS发布Rocket应用容器项目到现在,已经过去半年时间了.为了增加辨识度,项目更名为了Rkt.在沉寂了许久后,最近又开始在社区里出现了一些新鲜的声音. 首先是4月7日的一条新闻,Google领头投资CoreOS公司1200万美元以共同合作发展旗下的Kubernetes组件.此次合作除了促成新的商业发行版Tectonic的诞生,也使得Rkt容器与Kubernetes的关系拉近了一步:Kubernetes将提供对Rkt的友好支持,而Rkt则将沿用Kubernetes的Pods等概念来规划

【响应式】foundation栅格布局的“尝鲜”与“填坑”

提到响应式,就不得不提两个响应式框架--bootstrap和foundation.在标题上我已经说明白啦,今天给大家介绍的是foundation框架. 何为"尝鲜"?就是带大伙初步一下foundation的灵活和强大 何为"踩坑"?就是我把我使用的时候踩过的坑给标个记号,这样大伙用的时候就可以"绕道而行"啦! 没错今天我这篇文章讲的就是北方酱左手边的那个看起来温(diao)文(de)尔(yi)雅(bi)的山羊先生:foundation!: 文章主

Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

前言:由于之前没有接触过Hibernate框架,但是最近看一些博客深深被它的"效率"所吸引,所以这就来跟大家一起就着一个简单的例子来尝尝Spring全家桶里自带的JPA的鲜 Spring-DATA-JPA 简介 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO

从[Greenplum 6.0] 1分钟安装尝鲜开始

Greenplum目前6版本目前已经迭代了几个小版本了,随着版本的更新,不断的有bug被修复. 打算试用的朋友可以入手了. 作为开年的第一个工作日的第一个帖子,必须从“开天辟地”的6.0开始.以下内容较简略,适合稍微有基础的朋友,不适合作为安装部署圣经(这类帖子在网上肯定已经很多了,自行百度即可). 尝试安装 目前Pivotal官方已经不再提供臃肿的bin安装包,而是通过对RedHat系更加友好的rpm包的方式发布,从官方下载到试用版本后(商用需要授权)直接执行安装. http://www.19

QT开发(六十三)——QT事件机制分析

QT开发(六十三)--QT事件机制分析 一.事件机制 事件是由系统或者QT平台本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事件则是由系统自动发出,如计时器事件. 事件的出现,使得程序代码不会按照原始的线性顺序执行.线性顺序的程序设计风格不适合处理复杂的用户交互,如用户交互过程中,用户点击"打开文件"将开始执行打开文件的操作,用户点击"保存文件"将开始执

Qt事件机制概览

Qt事件机制概览 Qt事件机制概览 消息循环 Qt事件循环 简介 QEventLoop 跨线程的信号和槽与事件循环 模态窗口 Native widget or Alien widget 创建Native widget 创建QApplication的message-only窗口 派发事件的公共基础方法 source code QApplication的创建过程 QWidget native QWidget 的创建过程 普通native widget回调过程 QApplication的message

JavaScript事件机制

<script type="text/javascript" src="http://runjs.cn/gist/2zmltkfa/all"></script> [前端培养-作业01]javascript事件机制 1.javascript事件模型 2.e.target与e.currentTarget是干什么的? 3.preventDefault与stopPropagation是干什么的 4.什么是dispatchEvent? 5.说一说事件代

Android-- Android事件机制之二:onTouch详解

Android事件机制之二:onTouch详解 在其中对OntouchEvent中的总结中,不是很具体.本文将主要对onTouch进行总结. onTouch是Android系统中整个事件机制的基础.Android中的其他事件,如onClick.onLongClick等都是以onTouch为基础的. onTouch包括从手指按下到离开手机屏幕的整个过程,在微观形式上,具体表现为action_down.action_move和action_up等过程. onTouch两种主要定义形式如下: (1)在

聊一聊Android的事件机制

侯 亮 1概述 在Android平台上,主要用到两种通信机制,即Binder机制和事件机制,前者用于跨进程通信,后者用于进程内部通信. 从技术实现上来说,事件机制还是比较简单的.从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有: 1)消息发送者: 2)消息队列: 3)消息处理循环. 示意图如下: 图中表达的基本意思是,消息发送者通过某种方式,将消息发送到某个消息队列里,同时还有一个消息处理循环,不断从消息队列里摘取消息,并进一步解析处理.