反射
1营密、概念
反射指在PHP運行狀態(tài)中械媒,擴展分析PHP程序,導出或提取出相關類评汰、方法纷捞、屬性、參數(shù)等的詳細信息被去,包括注釋
2主儡、使用
3、反射的作用
用于文檔生成惨缆、動態(tài)代理(proxy.php)
<?php
class mysql {
public function connect($db) {
echo "鏈接到數(shù)據(jù)庫".$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、接口的作用
- 對于實現(xiàn)接口的所有類踪央,必須實現(xiàn)接口的全部方法
- 接口為抽象而生
- 接口===強制規(guī)范和契約
- java中認為接口就是一種類型(type)
3臀玄、總結
- 接口作為一種規(guī)范和契約存在。作為規(guī)范畅蹂,接口應該保證可用性健无;作為契約,接口應該保證可控性
- 接口只是一個聲明液斜,一旦使用
interface
關鍵字累贤,就應該實現(xiàn)它。由程序員實現(xiàn)的接口叫外部接口少漆,由系統(tǒng)實現(xiàn)的接口叫內部接口 - PHP接口的兩個不足:1臼膏、沒有契約限制; 2示损、缺少足夠多的內部接口