当前位置: 首页 > news >正文

PHP event 事件机制

<?php
/*
 * PHP 事件机制
 */
class baseClass{

    private $_e;
    
    public function __set($name,$value){
        if( strncasecmp($name,"on",2) === 0 ){
            if(!isset($this->_e[$name]))
                $this->_e[$name] = array();
            return array_push($this->_e[$name] , $value);
        }
    }
    
    public function __get($name){
        if( strncasecmp($name,"on",2) === 0 ){
            if(!isset($this->_e[$name]))
                $this->_e[$name] = array();
            return $this->_e[$name];
        }
    }

    public function raiseEvent($name, $parse){
         if(isset($this->_e[$name])){
             print_r($this->_e[$name]);
             foreach($this->_e[$name] as $handler)
                call_user_func($handler,$parse);
         }
    }

    public function save(){
        //xxx
        $this->raiseEvent("onSave", array());
    }
}
$InsA = new baseClass();
//1
$InsA->onSave = function($e){
    echo $e;
};

//2
class Log{
   static public function saveLog($e){
        echo "save Log".$e;
   }
}
$InsA->onSave = array("Log" , "saveLog");

$InsA->raiseEvent('onClick','success');

?>

 

转载于:https://www.cnblogs.com/glory-jzx/p/3214722.html

相关文章:

  • 基于协同过滤的推荐引擎
  • 连续加班易“脑残”,程序员做做白日梦未尝不是一件好事!
  • Manacher模板,kmp,扩展kmp,最小表示法模板
  • linux修改文件读写执行权限命令chmod
  • right-click an action, missing Go to slot
  • 零售门店促销创新的八个思路
  • 华为C8812获取对system分区的读写权限
  • C#路径的相关操作
  • 第八章 对象和数组
  • 用 HTML 编写博客栏目
  • 指针的本质
  • intent intent-filter
  • [HDU] 1054 Strategic Game 入门树形DP
  • JS Invalid Label ,eval错误解决方法
  • A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
  • input的行数自动增减
  • input实现文字超出省略号功能
  • iOS 系统授权开发
  • JavaScript创建对象的四种方式
  • Java小白进阶笔记(3)-初级面向对象
  • maya建模与骨骼动画快速实现人工鱼
  • MySQL用户中的%到底包不包括localhost?
  • vuex 学习笔记 01
  • 代理模式
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 前端路由实现-history
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 微信小程序--------语音识别(前端自己也能玩)
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 飞书APP集成平台-数字化落地
  • #stm32整理(一)flash读写
  • #微信小程序:微信小程序常见的配置传旨
  • (2)Java 简介
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (七)c52学习之旅-中断
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .Net 4.0并行库实用性演练
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET的微型Web框架 Nancy
  • [51nod1610]路径计数
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [BZOJ3757] 苹果树
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [C/C++]数据结构 循环队列
  • [C++]:for循环for(int num : nums)
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [exgcd] Jzoj P1158 荒岛野人