PHP的钩子实现解析
2016-08-25 14:55
369 查看
我们想的是写一个类(通过这个类,向系统发送信息的时候,系统可以直接调用我们的类,而且我们的类只要遵循一定的规则设计,直接和原系统是相容的)。做了改进设计出如下钩子格式:
<?php
class Test {
public static function example() {
Hook::exec("string");
echo "hello<br />";
Hook::exec("arr");
}
}
class Hook {
static public function exec($type,$model=' ') {
if($model=' ') {
$m = new hello();
} else {
$m = new $model();
}
if($type=='string') {
$m->string();
} elseif($type=='arr') {
$m->arr();
}
}
}
//我们只要改动一个外部的hello类 就可以实现对系统内部的控制了。
class hello {
public function string() {
$str="I am a Hook test<br />";
echo "$str <br />";
}
public function arr() {
$arr =array(1,2,3,4,5,6);
echo "<pre>";
print_r($arr);
echo "</pre>";
}
}
Test::example();
?>
从上面可以看出,组成一个单独的类,系统内部的实现固定了后。外部可以写各种类,进行钩子的实现,现在写了一个hello类。假如增加一个拓展world类
同样可以仅仅改动Hook,而不用去改动Test系统内部,只要我们定义一个抽象类
abstract class lan {
abstract function string() ;
abstract function arr();
}
然后让所有的扩展类,比如hello或者另外写个类world继承这个抽象类,就可以直接写个扩展。
<?php
class Test {
public static function example() {
Hook::exec("string");
echo "hello<br />";
Hook::exec("arr");
}
}
class Hook {
static public function exec($type,$model=' ') {
if($model=' ') {
$m = new hello();
} else {
$m = new $model();
}
if($type=='string') {
$m->string();
} elseif($type=='arr') {
$m->arr();
}
}
}
//我们只要改动一个外部的hello类 就可以实现对系统内部的控制了。
class hello {
public function string() {
$str="I am a Hook test<br />";
echo "$str <br />";
}
public function arr() {
$arr =array(1,2,3,4,5,6);
echo "<pre>";
print_r($arr);
echo "</pre>";
}
}
Test::example();
?>
从上面可以看出,组成一个单独的类,系统内部的实现固定了后。外部可以写各种类,进行钩子的实现,现在写了一个hello类。假如增加一个拓展world类
同样可以仅仅改动Hook,而不用去改动Test系统内部,只要我们定义一个抽象类
abstract class lan {
abstract function string() ;
abstract function arr();
}
然后让所有的扩展类,比如hello或者另外写个类world继承这个抽象类,就可以直接写个扩展。
相关文章推荐
- PHP的钩子实现解析
- PHP的钩子实现解析
- 解析网站301重定向的实现方法,包括iis,apache,asp,php的方法
- Apache Hook机制解析(上)——钩子机制的实现
- php DOM解析xml文档以及对节点增删改查实现
- PHP之运用CI用钩子实现URL权限控制
- 【php】jquery中$.get实现解析json格式数据及jsonp跨域
- 实现lighttpd-1.5+mod_proxy_core+多 Fastcgi backends 解析PHP负载平衡
- 解析php DOMElement 操作xml 文档的实现代码
- PHP实现抓取页面与代码解析
- php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
- php的autoload机制的实现解析
- 实现php 二级域名无限解析 自己实践+看别人文章
- 分享一篇很好的关于phpExcelReader实现Excel解析的文章~~~~~
- PHP的autoload机制的实现解析
- PHP之运用CI用钩子实现URL权限控制
- Apache Hook机制解析(上)——钩子机制的实现
- 实现lighttpd-1.5+mod_proxy_core+多 Fastcgi backends 解析PHP负载平衡
- 用php解析html的实现代码
- PHP的autoload机制的实现解析