什么是反射?
動態獲取 類的方法、屬性、參數,注釋 等 信息以及動態調用對象的方法的功能稱為反射API。
反射是操縱面向對象范型中元模型的API,其功能十分強大,可幫助我們構建復雜,可擴展的應用。
反射類/函數的功能
可以獲取類的一切信息,包括:
1. 類基本信息(類名、是否是抽象類、是否可實例化、類是否為final或者abstract)
2. 類的方法、方法是否存在、方法返回值、方法的注釋、Method Names
3. 類的屬性,靜態屬性,常量
4. 所在命名空間 Namespace
$boy = new HandsonBoy();
echo $boy->name.'<br />';
$boy->hair = 'short';
用反射來獲取類的屬性
$reflect = new ReflectionObject($boy); 實例化這一步最重要
$props = $reflect->getProperties();
//反射遍歷屬性
foreach ($props as $prop){
var_dump($prop->getName().PHP_EOL);
}
$methods = $reflect->getMethods();
foreach ($methods as $method){
var_dump($method->getName().PHP_EOL);
}
```
<?php
class HandsonBoy
{
private $name = 'gao';
private $age = 23;
public function __set($name, $value)
{
echo '您正在設置私有屬性'.$name.'<br>';
$this->name = $value;
}
public function __get($name)
{
if (!isset($this->$name))
{
echo '未設置'.$name;
$this->name = '正為你設置默認值';
}
return $this->name;
}
private function index()
{
echo 'hhhh';
}
}
$boy = new HandsonBoy();
//echo $boy->name;
$reflect = new ReflectionObject($boy);
$props = $reflect->getProperties();
foreach ($props as $prop) {
var_dump($prop->getName().PHP_EOL);
}
$methods = $reflect->getMethods();
foreach ($methods as $method){
if ($method->getName() == 'index') {
$method->getName();
}
}
```
- 空白目錄
- 安裝
- linux下安裝nginx
- linux下安裝php
- 調試
- windows 安裝wamp
- 常用源
- 類型
- Boolean布爾類型
- Integer整型
- Float浮點型
- String字符串
- Array數組
- Object對象
- Resource資源類型
- NULL
- Callback/Callable類型
- 類型轉換
- 變量
- 預定義變量
- 常量
- 魔術常量(預定義常量)
- 語法
- 運算符
- 流程控制
- 條件語句
- if
- else
- else if/elseif
- switch
- 循環語句
- while
- do-while
- for
- foreach
- break
- return
- continue
- require
- include
- require_once
- include_once
- 函數
- 內置函數
- 匿名函數
- 自定義函數
- 類與對象
- 屬性
- 聲明
- public
- protected
- private
- 類常量
- 方法
- 魔術方法
- __construct()
- __destruct()
- __call()
- __callStatic()
- __get()
- __set()
- __isset()
- __unset()
- __sleep()
- __wakeup()
- __toString()
- __invoke()
- __set_state()
- __clone()
- __debugInfo()
- 方法的調用
- ->(對象運算符)
- ::(范圍解析操作符)
- 設計模式
- 依賴注入
- call_user_func
- is_callable (
- 創建型模式
- 工廠方法模式
- 抽象工廠模式
- 單例模式
- 建造者模式
- 原型模式
- 結構性模式
- 適配器模式
- 裝飾器模式
- 代理模式
- 外觀模式
- 橋接模式
- 組合模式
- 享元模式
- 行為型模式
- 策略模式
- 模板方法模式
- 觀察者模式
- 迭代子模式
- 責任鏈模式
- 命令模式
- 備忘錄模式
- 訪問者模式
- 中介者模式
- 解釋器模式
- 六大原則
- uml語言
- 反射
- 類型約束
- 調試
- lamp
- lnmp
- composer
- 工作常用
- UML圖
- 常見問題