反射
1、概念
反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出相关类、方法、属性、参数等的详细信息,包括注释
2、使用
3、反射的作用
用于文档生成、动态代理(proxy.php)
<?php
class mysql {
public function connect($db) {
echo "链接到数据库".$db[0];
}
}
class sqlproxy {
private $target;
function __construct($tar) {
$this->target[] = new $tar();
}
function __call($name, $args) {
foreach ($this->target as $obj) {
$r = new ReflectionClass($obj);
//echo $r->getMethod($name),"<br/>";
if ($method = $r->getMethod($name)) {
//echo $method->isPublic(),"<br/>";
//var_dump ($method->isAbstract(),"<br/>");
if ($method->isPublic() && !$method->isAbstract()) {
echo "方法前拦截记录LOG","<br/>";
$method->invoke($obj, $args);
echo "方法后拦截","<br/>";
}
}
}
}
}
$obj = new sqlproxy('mysql');
$obj -> connect('member');
面向接口编程
1、 概念:
- 狭义:interface
- 广义:任何一个对外服务的接口
2、接口的作用
- 对于实现接口的所有类,必须实现接口的全部方法
- 接口为抽象而生
- 接口===强制规范和契约
- java中认为接口就是一种类型(type)
3、总结
- 接口作为一种规范和契约存在。作为规范,接口应该保证可用性;作为契约,接口应该保证可控性
- 接口只是一个声明,一旦使用
interface
关键字,就应该实现它。由程序员实现的接口叫外部接口,由系统实现的接口叫内部接口 - PHP接口的两个不足:1、没有契约限制; 2、缺少足够多的内部接口
网友评论