什么是反射?
动态获取 类的方法、属性、参数,注释 等 信息以及动态调用对象的方法的功能称为反射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图
- 常见问题