# 反射機制
## 理解:
>
面向對象編程中對象被賦予了自省的能力,而這個自省的過程就是反射。
反射,直觀理解就是根據到達地找到出發地和來源。比如,一個·光禿禿的對象,我們可以僅僅通過這個對象就能知道它所屬的類,擁有哪些方法。
## 定義:
> 反射是指在PHP運行狀態中,擴展分析PHP程序,導出或提出關于類、方法、屬性、參數等的詳細信息,包括注釋。這種動態獲取信息以及動態調用對象方法的功能稱為反射API。
## 代碼:
~~~
class Cat{
public $name;
private $sex;
public function __construct($name,$sex)
{
$this->name = $name;
$this->sex = $sex;
}
public function __toString(){
//返回該類的相關信息,比如類名,所有成員方法和所有屬性等
//初步接觸一下反射機制(可以獲取到該類的所有信息) ReflectionClass
echo '<br>';
//1.創建一個反射對象,也就是一個類本身也可以看做一個對象
$reflection_obj = new ReflectionClass($this);
echo '<pre>';
//2.通過反射對象獲取到該類的相關信息 [你是一個面向對象的程序員]
//(1)類名
echo '<br> 類名是'.$reflection_obj->getName();
echo '<br>成員方法';
//(2)所有的成員方法
var_dump($reflection_obj->getMethods());
//(3)所有屬性
echo '<br>屬性';
var_dump($reflection_obj->getProperties());
return '';
}
}
$cat = new Cat('花貓','公的');
echo $cat;
~~~
## 使用反射實現代理調用(這個也是反射最核心的價值)
- PHP操作集合
- 獲取字符首字母
- PHP實現定時備份MySQL數據庫
- PHP定時發送郵件
- PHP基本語法
- 總結
- 命名空間
- 錯誤抑制符
- 位運算符
- 原碼,反碼,補碼
- traits
- PHP的反射機制
- const和define的區別
- 語法
- 常用的函數
- 1.變量及打印函數
- 2.引入文件
- 3.常量
- 4.錯誤處理
- 5.面向對象
- 數據結構與算法
- 結構
- 數組
- 索引
- 散列表(哈希表)
- 棧
- 隊列
- 鏈表
- 算法
- 排序算法
- 插入排序
- 冒泡排序
- 選擇排序
- 歸并排序
- 快速排序
- 查找算法
- 二分查找
- 二分查找變形版本1:查詢數據在序列中第一次出現
- 哈希算法
- 算法復雜度
- Smarty模板引擎
- composer
- yaf
- yaf的安裝配置
- 其它
- Java
- JavaSE
- 1.Java發展及JDK安裝配置
- 2.Eclipse的下載及安裝
- 3.Java開發基礎
- 虛擬機
- 2.編輯虛擬機設置
- 1.虛擬機下安裝centos
- 3.安裝vmtools
- Linux
- 1.vi和vim編輯器
- 2.開機、重啟和用戶登錄注銷
- 3.用戶管理
- 4.用戶組管理
- 5.用戶和組的相關文件
- 6.linux運行級別
- 7.幫助指令
- 8.文件目錄類指令
- 9.時間日期類
- 10.搜索查找類
- 11.壓縮和解壓縮
- 12.組管理和權限管理(難點,重點)
- 虛擬主機的配置
- phpstudy快捷配置
- 配置文件配置
- PHP面向對象高級特性
- SPL標準庫(PHP標準庫)
- PHP鏈式操作的實現
- 面向對象編程的基本原則
- 設計模式
- 基本的設計模式