php 实例代码解析(PHP反射学习入门示例)
类别:编程学习 浏览量:2654
时间:2022-01-26 01:57:44 php 实例代码解析
PHP反射学习入门示例本文实例讲述了PHP反射。分享给大家供大家参考,具体如下:
今天开始学习php 的反射,许多人可能还没有听说过反射这个概念,简单点说反射的就是让你拥有剖析类、函数的能力。
有的同学可能会问我剖析类有什么用,我为什么要学反射,我只能说不学反射并不会对你实现业务有任何影响,但是如果你想写出结构优雅的程序,想写出维护性和扩展性都很高的程序,学习反射是必不可少的。
PHP 内置了一组反射类来实现类的反射,常用的有:
- ReflectionClass 解析类
- ReflectionProperty 类的属性的相关信息
- ReflectionMethod 类方法的有关信息
- ReflectionParameter 取回了函数或方法参数的相关信息
想看全的就翻手册去。
今天先通过一段演示代码简单看下php的反射到底是个什么东西。
|
<?php class Hero { protected $name ; protected $skills = []; public function __construct( $name , $skills = []) { $this ->name = $name ; $this ->skills = $skills ; } public function attack( $hero ) { echo "Attack {$hero->name}" . PHP_EOL; } public function execute( $index ) { echo "Axecute {$index} skill" . PHP_EOL; } } $ref = new ReflectionClass( 'Hero' ); if ( $ref ->isInstantiable()) { echo '可以实例化' . PHP_EOL; } // 获取类的构造函数 $constructor = $ref ->getConstructor(); print_r( $constructor ); //ReflectionMethod E对象 //获取属性 if ( $ref ->hasProperty( 'name' )) { $attr = $ref ->getProperty( 'name' ); print_r( $attr ); //ReflectionProperty 对象 } // 获取属性列表 $attributes = $ref ->getProperties(); foreach ( $attributes as $row ) { //row 为 ReflectionProperty 的实例 echo $row ->getName() . "\n" ; } // 获取方法 if ( $ref ->hasMethod( 'attack' )) { $method = $ref ->getMethod( 'attack' ); //$method 为 ReflectionMethod 的实例 print_r( $method ); } // 获取方法列表 $methods = $ref ->getMethods(); foreach ( $methods as $row ) { //这的row 是 ReflectionMethod 的实例 echo $row ->getName() . PHP_EOL; } |
运行结果:
可以实例化
ReflectionMethod Object
(
[name] => __construct
[class] => Hero
)
ReflectionProperty Object
(
[name] => name
[class] => Hero
)
name
skills
ReflectionMethod Object
(
[name] => attack
[class] => Hero
)
__construct
attack
execute
学习新东西,首先是要有熟悉感,或者叫手感,有了手感你才会对它不畏惧,先把上面的代码抄上一篇,运行一下,你应该会对php 反射有一点初步的印象。
下一篇再做一个小例子,看看用发可以做什么神奇的事情。
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/ltx06/article/details/78933170
您可能感兴趣
- php如何获取当前日期(php实现获取近几日、月时间示例)
- php怎么修改单独一行数据(PHP实现批量修改文件名的方法示例)
- php最好的探针(php探针不显示内存解决方法)
- thinkphp5访问路径(thinkphp5修改view到根目录实例方法)
- php如何异步操作(php链式操作的实现方式分析)
- dedecms标签调用原理(DEDECMS安全设置 执行php脚本限制设置方法apache+nginx)
- php上传图片视频代码(详解PHP素材图片上传、下载功能)
- php如何发邮件(PHP示例演示发送邮件给某个邮箱)
- php递归ajax的交互模型(PHP使用反向Ajax技术实现在线客服系统详解)
- php中把字符串分开的函数(PHP字符串中抽取子串操作实例分析)
- php开发的主要技术(详解PHP神奇又有用的Trait)
- apache服务器对php的支持原理(php apache开启跨域模式过程详解)
- php经典算法大全(php菜单/评论数据递归分级算法的实现方法)
- web项目部署到阿里云服务器上(阿里云的WindowsServer2016上部署php+apache)
- thinkphp5 新增模块(Thinkphp5.0框架的Db操作实例分析连接、增删改查、链式操作等)
- php目录使用教程学习(PHP FileSystem 文件系统常用api整理总结)
- 东南亚安全吗(好不好挣钱)
- 潘长江小品《照亮全家福》台词剧本完整版(潘长江小品照亮全家福台词剧本完整版)
- 一窗通办政务服务小品剧本(一窗通办政务服务小品剧本)
- 刘韬涛丁子贺小品《根治低头族》台词剧本(刘韬涛丁子贺小品根治低头族台词剧本)
- 看完《夺冠》,黄渤的演技我实在夸不起来,彭昱畅反令人惊喜(黄渤的演技我实在夸不起来)
- 黄渤泪目 我的痴呆父亲,我内心永远的痛(黄渤泪目我的痴呆父亲)
热门推荐
- 宝塔ftp服务器怎么设置(宝塔面板创建的ftp登陆无法连接的解决方案)
- canvas宽高技巧(canvas画图被放大且模糊的解决方法)
- laravel终止函数执行(laravel 输出最后执行sql 附:whereIn的使用方法)
- centos怎样开启tomcat(Centos8.2云服务器环境安装Tomcat8.5的详细教程)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- js实现图片旋转
- ASP.NET Web API中参数的传递
- dedecms投稿页面(dedecms artlist读取全站最新文章的代码)
- laravel框架网站搭建教程(Laravel框架实现文件上传的方法分析)
- vue控制div滚动条(vue3实现CSS无限无缝滚动效果)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9