php事件驱动
1. [文件] class.Dispatcher.php ~ 967B 下载(9)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<?phpsession_start();require_once('class.Handler_Event.php');header("Content-type:text/html; charset=utf-8");class Dispatcher{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handle_the_event(){ $name="handler_$this->handle"; if(class_exists("$name")){ $handler_obj=new $name($this->handle); $response=$handler_obj->secure_handler(); return $response; }else{ echo "I can't handle this!"; } }}?><html><head><title>Secure,Event Driven Record Viewer!</title></head><body><form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post"> <input type="submit" name="event" value="View"> <input type="submit" name="event" value="Edit"></form></body></html><?phpfunction handle(){ $event=$_POST['event']; $do=new Dispatcher($event); $do->handle_the_event();}$_SESSION['name']="Wangzy";if(isset($_POST['event'])) handle();?> |
2. [文件] class.Handler_Event.php ~ 1KB 下载(6)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<?php//Event parentabstract class Event_Handler{ function dbconn(){ $link_id=mysql_connect("localhost","root","root"); mysql_select_db("mytest",$link_id); mysql_query("set names utf8",$link_id); return $link_id; } abstract function handled_event(); abstract function secure_handler();}//View Eventclass Handler_View extends Event_Handler{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handled_event(){ echo "The event, $this->handle, is now handled.<br> It is ,I promise!<br><br> Your records are as follows:<br><br>"; $id=parent::dbconn(); $result=mysql_query("select * from table01",$id); while($row=mysql_fetch_array($result)){ echo "Numbers:".$row['number']."\tName:".$row['name']."<br>"; } } function secure_handler(){ if($_SESSION['name']=="Wangzy"){ $this->handled_event(); }else{ echo "Sorry {$_SESSION['name']} you are not authorized!"; } }}//Edit Eventclass Handler_Edit extends Event_Handler{ private $handle; function __construct($event_handle){ $this->handle=$event_handle; } function handled_event(){ echo "This is event $this->handle, which is now handled -no kidding!<br>"; } function secure_handler(){ $this->handled_event(); }} |
php事件驱动的更多相关文章
- C++ 事件驱动型银行排队模拟
最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...
- Node学习笔记(二):事件驱动
接触Node,提得最多的可能就是回调,异步非阻塞处理,思前想后,JavaScript从前端语言过渡到服务器端,最大的劣势可能就是线程,当然这方面的不足现在也被慢慢弥补起来了(很多第三方的npm包可供下 ...
- IDDD 实现领域驱动设计-CQRS(命令查询职责分离)和 EDA(事件驱动架构)
上一篇:<IDDD 实现领域驱动设计-SOA.REST 和六边形架构> 阅读目录: CQRS-命令查询职责分离 EDA-事件驱动架构 Domin Event-领域事件 Long-Runni ...
- Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程
Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程 这里的函数式编程的设计以muduo为例进行对比说明: Reactor实现架构对比 面向对象的设计类图如下: 函数式编程以muduo为例 ...
- 输入事件驱动---evdev_handler的大致实现流程(修整版)
一.input输入子系统框架 下 图是input输入子系统框架,输入子系统由输入子系统核心层(input core),驱动层和事件处理层(Event Handler)三部分组成.一个输入事件,比如滑动 ...
- NodeJS中的异步I/O、事件驱动
nodejs的主要特点是单线程.异步I/O.事件驱动.让我们先大概了解一下这些名词的意思. 单线程 单线程是任务按照顺序执行的,并且每次只执行一个任务,只有前面的任务执行完成以后,后面的任务才执行.在 ...
- 事件驱动之Twsited异步网络框架
在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结 ...
- Python交互式编程导论----事件驱动编程
传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结束 每一个代码块里是完成各种各样事情 ...
- [.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能
一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户 ...
- ENode 1.0 - 事件驱动架构(EDA)思想的在框架中如何体现
开源地址:https://github.com/tangxuehua/enode 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用很多 ...
随机推荐
- EasyuiAPI:基础
一.EasyLoader(简单加载) locale属性:值类型是string locales属性:值类型是object 二.Draggable(拖动) 1.通过标签创建: <div id=&qu ...
- Qml 定义 constant
对于程序中一些常量如字符串, 实数等, C++中经常用的方法, 是定义全局常量: 或者把所有意义相近的常量用一个单例类收集起来. QML是类JSON的标识性语言, 使用js 语法去操作对象. 在QML ...
- KVC、KVO
概述 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC).键值监听( ...
- Linux入门(二)Linux基本命令及基本操作
1 常用Linux命令 图形界面进入到字符界面: ctrl+alt+F2~F6 字符界面进入到图形界面:ctrl +alt+F7 查看本机ip: ifconfig (windows是:ipconf ...
- Java 泛型 协变性、逆变性
Java 泛型 协变性.逆变性 @author ixenos 摘要:协变性.协变通配符.协变数组.协变返回值 协变性.逆变性和无关性 在面向对象的计算机程序语言中,经常涉及到类型之间的转换,例如从具体 ...
- Mac OS终端提示符前缀”bogon”
像往常一样新打开一个终端,却发现一个很有意思的现象,以前的提示符的组成为: [机器名]:~[用户名] 以前:YangGavin's MacBook Pro:~ yanggavin$ 现在:bogon: ...
- linux中的守护进程
概念Daemon(精灵)进程,是Linux中的后台服务进程,生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.模型守护进程编程步骤1. 创建子进程,父进程退出所有工 ...
- Leetcode 074 Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- onmousedown活用之碰撞效果
通过绝对定位,在页面中随意位置设置两个div; 也就是说div 是拖动的框,div1和div2是被触碰的框; <!DOCTYPE html> <html> <head&g ...
- 【Machine Learning in Action --4】朴素贝叶斯电子邮件垃圾过滤
摘要:这里用的是词袋模型,即一个词在文档中出现不止一次,每个单词可以出现多次. 1.准备数据:切分文本 前一节过滤网站恶意留言中词向量是给定的,下面介绍如何从文本文档中构建自己的词列表 先举例说明,在 ...