上一篇我们在观察者模式中加入了事件,插件可以根据不同的事件来做不同的业务处理,基本上很简单,我们直接通过主体对象携带事件名称即可。
下面我们要实现的是,只有在知道具体事件后才去实例化绑定了此事件的插件。
下面是具体的实现:
<?php
/**
* Author: shan...
shanhuhai
6年前 (2017-08-28) 3486℃
5喜欢
上一篇通过一个简单的例子介绍了下什么是观察者模式,在实际的业务中,观察者应该对不同的情况做出不同的发应,这个其实很简单,我们加一个给主体对象加一个event的属性就ok了。
看对上一篇修改后的代码,可以自己对比下,改动并不大:
<?php
/**
* 支持了事件的版本
...
shanhuhai
6年前 (2017-08-27) 2150℃
3喜欢
今天来介绍一个很有用的设计模式,“观察者模式”,顾名思义,既然有“观察者”, 那么一定就有“被观察者”,从这个层面可以理解到,在这个设计模式中有两个对象, 一个是主体对象,一个是客体对象,在实际的代码实现上实际是“被观察者”主动通知了“观察者”。“被观察者”是主体对象,现在看不懂...
shanhuhai
6年前 (2017-08-26) 3579℃
8喜欢
先看代码:
<?php
if (PHP_SAPI != 'cli') {
exit('Please run it in terminal!');
}
if ($argc < 3) {
exit('At least 2 arguments neede...
shanhuhai
6年前 (2017-08-23) 3023℃
3喜欢
上一篇简单介绍了 php 反射的几个常见类的使用方法,但是用反射能做些什么,你可能还是想象不到,
下面我稍微应用反射类来做点东西,大家知道实例化一个类需要用new 关键字,不用 new 可以吗?答案是可以的,用反射就能实现:
首先创建一个文件 student.php:
<?...
shanhuhai
6年前 (2017-08-22) 4545℃
4喜欢
今天开始学习php 的反射,许多人可能还没有听说过反射这个概念,简单点说反射的就是让你拥有剖析类、函数的能力。
有的同学可能会问我剖析类有什么用,我为什么要学反射,我只能说不学反射并不会对你实现业务有任何影响,但是如果你想写出结构优雅的程序,想写出维护性和扩展性都很高的程序,学习...
shanhuhai
6年前 (2017-08-21) 2628℃
4喜欢
相信单元测试对于大多数PHP程序员来说还都处于听说过的阶段,似乎PHP就是为了开发速度快而生的,做了单元测试岂不是会拖慢开发速度?这个说法好像也是有道理的,但是还是要针对项目特点,有些对稳定性,健壮性要求的项目,做单元测试可以大幅减少bug的产生率,提高后期维护性,所以想做一个优...
shanhuhai
6年前 (2017-08-18) 10617℃
2喜欢
现在你应该知道如何做一个模板引擎类了,只不过使用原生的 php 做模板语法。
看下面代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
...
shanhuhai
6年前 (2017-08-11) 3891℃
3喜欢
上一篇,我们给出了一个简单的模板引擎的例子,通过 extract 函数将变量注入到当前作用域,通过 include 将模板文件引入,从而将变量注入到了模板,但是这种方法的问题是,我们无法拿到内容,内容直接输出到了浏览器端,这篇我们看看如何拿到模板解析后的内容。
缓存区控制函数
在...
shanhuhai
6年前 (2017-08-10) 5863℃
1喜欢
上一篇,我们讲了模板引擎的作用,以及做了一些准备工作,好了,现在来开始实现一个简单的模板引擎。
首先看一个简单的demo,我通过三个文件实现了一个简单的模板引擎的例子
目录结构如下:
view.php是主要的模板引擎类,
demo.php 是入口文件,
tpl 目录是模板目录
...
shanhuhai
6年前 (2017-08-09) 13012℃
2喜欢