PHP---反射--继续剖析
- 首先定义一个类
<?php
Interface trainning
{
public function exec();
}
class mma implements trainning
{
public function exec()
{
return "我是徐晓冬~练MMA找我就对了,北京著名的疯子教练就是我!";
}
}
class muay_thai implements trainning
{
public function exec()
{
return "雅木萨,练泰拳找我就对了,走吧普及岛海滩走一道";
}
}
class sd implements trainning
{
public function exec()
{
return "卧操~还找他妈的隋炀帝吗?要不到樊荣那里去看看";
}
} class mycoach
{
protected $name;
protected $age;
protected $expertise=array();
public function __construct($name,$age,trainning $martial)
{
$this->name=$name;
$this->age=$age;
$this->type = $martial;
}
public function setskill(Array $skill)
{
$this->skill = $skill;
var_dump($this->skill);
return (Array) $this->skill;
}
public function curriculum()
{
echo $this->type->exec();
}
}
$coach = new ReflectionClass('mycoach');
if ($coach->isInstantiable())
{
echo "可以实例化".PHP_EOL;
}
$myinit = $coach->getConstructor();
- 通过反射获取类的构造函数的入参(或者说依赖)
$dependencies=$myinit->getParameters();
var_dump($dependencies);
foreach($dependencies as $dp)
{
if (is_null($dp->getclass()))
{
echo "只是个普通参数".PHP_EOL;
}
else{
echo "类的名字".$dp->getClass()->name.PHP_EOL;
}
}
输出结果:
array(3) {
[0]=>
object(ReflectionParameter)#3 (1) {
["name"]=>
string(4) "name"
}
[1]=>
object(ReflectionParameter)#4 (1) {
["name"]=>
string(3) "age"
}
[2]=>
object(ReflectionParameter)#5 (1) {
["name"]=>
string(7) "martial"
}
}
array(3) {
[0]=>
object(ReflectionParameter)#3 (1) {
["name"]=>
string(4) "name"
}
[1]=>
object(ReflectionParameter)#4 (1) {
["name"]=>
string(3) "age"
}
[2]=>
object(ReflectionParameter)#5 (1) {
["name"]=>
string(7) "martial"
}
}
只是个普通参数
只是个普通参数
类的名字trainning
- getName getFileName
var_dump("获取列的名字: ".$coach->getName());
var_dump("获取类文件的路径: ".$myinit->getFileName());
输出结果:
string() "获取列的名字: mycoach"
string() "获取类文件的路径: /home/cpc/PhpstormProjects/untitled/duwa.php"
PHP---反射--继续剖析的更多相关文章
- Java反射机制剖析(四)-深度剖析动态代理原理及总结
动态代理类原理(示例代码参见java反射机制剖析(三)) a) 理解上面的动态代理示例流程 a) 理解上面的动态代理示例流程 b) 代理接口实现类源代码剖析 咱们一起来剖析一下代理实现类($Pr ...
- Java反射机制剖析(三)-简单谈谈动态代理
通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1. 代理模式 代理模式就是为其他对象提供一种代理来 ...
- Java反射机制剖析(二)-功能以及举例
从<java反射机制剖析(一)>的API我们看到了许多接口和类,我们能够通过这些接口做些什么呢? 从上篇API中我们能看到它能够完成下面的这些功能: 1) 获得类 A. 运 ...
- Java反射机制剖析(一)-定义和API
1. 什么是Java反射机制 Java的反射机制是在程序运行时,能够完全知道任何一个类,及其它的属性和方法,并且能够任意调用一个对象的属性和方法.这种运行时的动态获取就是Java的反射机制.其 ...
- 【54】Java反射机制剖析
java反射机制: 1.指的是可以于运行时加载,探知和使用编译期间完全未知的类. 2.程序在运行状态中, 可以动态加载一个只有名称的类, 对于任意一个已经加载的类,都能够知道这个类的所有属性和方法; ...
- java反射机制剖析(二)— Class Loader
上一篇博客简要的提了一下java反射机制中涉及到的一些相关知识,那么ClassLoader就是当中之中的一个.本篇博客就具体的对ClassLoader做一个相对深入的了解. 作为了解须要知道的是.事实 ...
- 深入浅出学习Spring框架(三):AOP 详解
AOP的英文解释——AOPAspect Oriented Programming面向切面编程.主要目的是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. 在反 ...
- 五、Java基础加强
Java基础加强 1.MyEclipse的使用工作空间(workspace).工程(project)在eclipse下Java程序的编写和运行,及java运行环境的配置.快捷键的配置,常用快捷键:内容 ...
- 【Struts2】剖析Struts2中的反射技术 ValueStack(值栈)
1,Struts2框架主要组件的处理流程 在说ValueStack之前,笔者先说一说Struts2中常用的组件,struts2中常用组件有strutsPrepareAndExecuteExceptio ...
- Java反射机制深度剖析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制.我们知道Java是一门静态 ...
随机推荐
- [转帖]Keccak简介
Keccak简介 https://blog.csdn.net/chengqiuming/article/details/82819769 2018年09月23日 08:04:40 cakincqm 阅 ...
- 正则表达式(Regular Expression, RegEx)学习入门
1. 概述 正则表达式(Regular Expression, RegEx)是一种匹配模式,描述的是一串文本的特征. 正如自然语言中高大.坚固等词语抽象出来描述事物特征一样,正则表达式就是字符的高度抽 ...
- Lucas定理的运用及组合数奇偶性的判断
组合数奇偶性的判断 对于C(n,k),若n&k == k 则c(n,k)为奇数,否则为偶数. 最直观的方法就是计算一下,然后看它的奇偶性:但是这个时间以及数据范围上都不允许: 另外一种方法就是 ...
- SAS学习笔记17 SAS生成随机数函数(rand function)
- 浅析ARM协处理器CP15寄存器有关指令:MCR\MRC
ref:http://blog.csdn.net/gameit/article/details/13169405 背景: 在uboot中,start.s中涉及到了 CP15 的有关操作.查阅有关资料, ...
- ActiveMQ 简单应用
ActiveMQ简单应用到复杂的订单模块,提高前台的访问速度. 一.当提交订单后,发送消息给ActiveMQ. @Service public class JmsSend { private stat ...
- 怎样理解script标签的defer属性和async属性
如果script标签是引用的外部js文件, 那就会有一个下载js文件这一过程, 为了不因为这个下载过程而阻塞页面解析与渲染, 我们需要一种机制来解决这一问题, 方法之一就是使用 defer和async ...
- charles 的安装和手机配置 (我用的win7系统 ,和 iphone8 的配置)
2018/12/17 由于想抓一下某个手机上app的数据,然后就装了charles,纯记录一下,便于以后不用再查资料.个人参考的网址:https://blog.csdn.net/weixin_4233 ...
- 一个简单的window.onscroll实例
鉴于better-scroll实现这个效果很复杂,想用最原生的效果来实现吸顶效果 一个简单的window.onscroll实例,可以应用于移动端 demo 一个简单的window.onscroll实例 ...
- maven项目下pom.xml依赖报错
百度了好几次,说是在本地仓库下少plugin,但是找了之后,发现并没有少呀