-
Notifications
You must be signed in to change notification settings - Fork 702
/
test.php
64 lines (55 loc) · 1.45 KB
/
test.php
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
60
61
62
63
64
<?php
/**
* 行为型模式
*
* php命令模式
* 命令模式:就是在依赖的类中间加一个命令类,本来可以直接调用的类方法现在通过命令来调用,已达到
* 解耦的的目的,其次可以实现undo,redo等操作,因为你知道调了哪些命令
*
* 下面我们来用命令模式实现一个记事本,涉及的命令:
* - 新建
* - 写入
* - 保存
*
* @author TIGERB <https://github.com/TIGERB>
* @example 运行 php test.php
*/
// 注册自加载
spl_autoload_register('autoload');
function autoload($class)
{
require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}
/************************************* test *************************************/
use command\Text;
use command\OrderCreate;
use command\OrderWrite;
use command\OrderSave;
use command\Console;
try {
// 创建一个记事本实例
$text = new Text();
// 创建命令
$create = new OrderCreate($text, [
'filename' => 'test.txt'
]);
// 写入命令
$write = new OrderWrite($text, [
'filename' => 'test.txt',
'content' => 'life is a struggle'
]);
// 保存命令
$save = new OrderSave($text, [
'filename' => 'text.txt'
]);
// 创建一个控制台
$console = new Console();
// 添加命令
$console->add($create);
$console->add($write);
$console->add($save);
// 运行命令
$console->run();
} catch (\Exception $e) {
echo $e->getMessage();
}