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环境搭建apache(apache 支持 php5 的配置方法)
- php怎么设计状态模式(php设计模式之观察者模式定义与用法经典示例)
- php怎么弄不重复字符串(PHP中将一个字符串部分字符用星号*替代隐藏的实现代码)
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- phpsetcookie参数说明(PHP的cookie与session原理及用法详解)
- phpstudy 目录浏览宽度(JspStudy如何设置PHP根目录可编辑)
- thinkphp3.2.3 接口开发(ThinkPHP3.2.3框架Memcache缓存使用方法实例总结)
- php各个模式使用场景(PHP 并发场景的几种解决方案)
- php常见的数组函数(用php定义一个数组最简单的方法)
- iis上搭建php环境(vultr服务器windows server 2012 r2搭建IIS8+PHP+MYSQL+phpMyAdmin运行环境图文教程)
- thinkphp5框架怎么打开(thinkphp5.1框架中容器Container和门面Facade的实现方法分析)
- php如何定时执行某项(php解决crontab定时任务不能写入文件问题的方法分析)
- apachephp环境搭建(apache集成php7.3.5的详细步骤)
- php日期和时间怎么设置(PHP实现时间日期友好显示实现代码)
- php查找文件存在(php判断目录存在的简单方法)
- php命名对照表(PHP命名空间用法实例分析)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
- 哪几个历史人物被影协主席李雪健演的活灵活现(哪几个历史人物被影协主席李雪健演的活灵活现)
- 王伦狭隘,晁盖霸道,宋江奸诈骨头软,只有鲁智深才适合当寨主(王伦狭隘晁盖霸道)
- 他是梁山最早的头目,江湖人称 旱地忽律 ,宋江几乎将其遗忘(他是梁山最早的头目)
- 梁山创始人杜迁,为何不受宋江待见,只排名83位(梁山创始人杜迁)
热门推荐
- jenkins和docker自动化(Jenkins+Docker持续集成的实现)
- dedecms的简单说明(dedecms中英文网站之中英文搜索结果实现方法)
- SQL join中on与where区别
- python爬取百度搜索pdf文档(Python实现的爬取百度文库功能示例)
- python弹跳小球(python GUI实现小球满屏乱跑效果)
- volume怎么添加docker(docker volume删除卷的操作)
- docker容器是怎么进行通信的(Docker容器间通信与外网通信的操作)
- sqlserver维护计划保存在哪(SQL Server误设置max server memory的处理方法)
- x86与x64的区别?云服务器如何选择操作系统?(x86与x64的区别?云服务器如何选择操作系统?)
- dedecms投稿页面(dedecms artlist读取全站最新文章的代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9