与反射相干
类和对象相干的函数
get_object_vars get_class_methods get_class_vars get_class get_parent_class method_exists property_exists trait_exists
反射相干的 API 类
reflectiontype reflectionproperty reflectionobject reflectionfunction reflectionmethod reflectionexception reflectionextension reflectionparameter reflectionfunctionabstract reflectiongenerator reflectionclass reflectionclassconstant reflectionzendextension
反射 API 功用更壮大,甚至能复原这个类的原型,包含要领的接见权限等
运用场景
一个是对对象举行调试,另一个是猎取类的信息,平常有以下运用体式格局
文档生成 用它对文件里的类举行扫描,生成形貌文档
插件开辟 在 MVC 和插件开辟中,罕见运用反射
瑕玷
反射的机能斲丧也很大,平常情况下只管不运用
会损坏类的封装性,由于反射能够使本不应当暴露的要领或属性被强迫暴露了出来
实例
下面是一个应用反射特征,完成的简朴的数据库动态代办
基于动态代办,能够有更多的设想空间,如完成拦截器,属性要领增添,裁剪等等
class Mysql { function connect($db){ echo "connecting database ${db[0]}\r\n"; } } class SqlProxy { private $target; function __construct($tar){ $this->target[] = new $tar(); } function __call($name, $args){ if($method = $r->getMethod($name)){ if($method->isPublic() && !$method->isAbstract()){ echo "method before record \r\n"; $method->invoke($obj,$args); echo "method after record\r\n"; } } } } } $obj = new SqlProxy('Mysql'); $obj->connect('member');
别的
echo 与 print 都是言语构造,然则后者有返回值
print_r 和 var_dump 是一般函数 皆可打印多种范例数据,但后者会输出数据范例,前者第二参数可转变输出为返回
引荐:《PHP教程》
以上就是PHP 反射之动态代办的细致内容,更多请关注ki4网别的相干文章!