文档章节

php的Reflaction解决实例化对象参数不确定的问题

yangakw
 yangakw
发布于 2016/11/09 17:18
字数 222
阅读 3
收藏 0
点赞 0
评论 0
Reflaction是一个反射类,功能的是获取类包含的属性,以及相应的操作。 问题的产生是我在写一个工厂类,通过__call()方法去实例化目标对象, __call($name,$argv[]) __call()是php的魔术方法,其作用是当调用者找不到他的类中对应的函数时触发 比如: <?php class a{ public function __call($name , $argv[]){ echo $name; } } new a()->getName(); //结果是 getName ?> __call方法的$name参数是调用的函数名,$argv[]会把参数组合成数组 由于对象的参数是不确定的,所以__call();是不能实例化目标对象的。 但是Reflection可以解决这一问题 主要代码逻辑如下 。。。 public function __call($name , $argv[]){ //从函数名中获取类名 $ClassName=substr($name,0,-4); $ref=new /ReflactionClass($ClassName); $Object=$ref->newInteranceClass($argv); return $Object; } 。。。

本文转载自:http://www.yangakw.cn/2016/10/php%e7%9a%84reflaction%e8%a7%a3%e5%86%b3%e5%ae%9e%e4%be%8b%e5%8c%96...

共有 人打赏支持
yangakw
粉丝 0
博文 8
码字总数 96428
作品 0
青岛
后端工程师
thinkphp学习--spl_autoload_register 自定义自动加载函数详解

1.思考一个问题: 在一个php页面实例化时,必须先包含对应类文件,如果页面中实例化多个对象,怎么办呢?你可能会想,那就包含多个类文件嘛? 那如果这个对象是根据当前的参数动态实例化得到的...

share_good
2014/02/12
0
1
PHP源码中unserialize函数引发的漏洞分析

0×01 unserialize函数的概念 首先看下官方给出的解释:unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array 或...

cnbird
2013/03/12
0
0
PHP简明教程-面向对象基础 2

PHP简明教程 面向对象基础 2 其他的几个魔术方法 方法名 触发时机 参数1 参数2 备注 callStatic 当调用不存在的静态方法的时候自动执行这个方法 函数名 参数(数组) 该方法必须是static slee...

栗子boomboomboom
2017/07/03
0
0
PHP超级全局变量、魔术变量和魔术函数

PHP在设计的时候已经预定义了9个超级全局变量、8个魔术变量和13魔术函数,这些变量和函数可以在脚本的任何地方不用声明就可以使用。 在PHP开发会频繁的使用这些变量和函数,这些变量和函数可...

a928154159
02/22
0
0
unity实例化游戏澳门金沙平台搭建对象instantiate()

unity一共有10个实例澳门金沙平台搭建论坛:haozbbs.com Q1446595067 化对象的函数重载 1、参数只有一个object对象 实例化prefab 结果如图: cube的位置不确定是不是随机的,我试了几个,最后...

iysij
07/07
0
0
PHP超全局变量、魔术变量和魔术方法

PHP在设计的时候已经预定义了9个超全局变量、8个魔术变量和13魔术方法,这些变量和函数可以在脚本的任何地方不用声明就可以使 用。 在PHP开发会频繁的使用这些变量和函数,这些变量和函数可以...

Weltch
2016/10/15
527
0
黑马程序员-JAVA基础-Java 集合之泛型

所谓泛型就是允许在定义类、接口时指定类型形参,这个类型形参将在声明变量、创建对象时确定。增加了泛型支持后的集合,完全可以记住集合中元素的类型,并可以在编译时检查集合中元素的类型。...

不最醉不龟归
2016/11/22
18
0
Node 异步通信解决方案 - crosscom

crosscom crosscom是nodejs进程间及浏览器非同域页面间的Callback方式及Promise方式异步通信解决方案。 支持的环境 nodejs环境 浏览器requirejs环境 浏览器原生JavaScript环境 nodejs环境与浏...

xunum
2017/12/24
46
0
Yii2 实例管理

Yii2 实例管理 Yii2框架没有提供类似ZendFramework3中提供的ServiceManager.那么Yii2框架是如何管理对象实例的呢? 长时间使用Yii2框架的童鞋一定已经适应了对象中的public变量,以及一个来自y...

Vett
2017/12/23
0
0
wangchenxunum/crosscom

crosscom crosscom是nodejs进程间及浏览器非同域页面间的Callback方式及Promise方式异步通信解决方案。 支持的环境 nodejs环境 浏览器requirejs环境 浏览器原生JavaScript环境 nodejs环境与浏...

wangchenxunum
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
8分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
15分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
18分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
50分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
50分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
52分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
53分钟前
9
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
54分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部