1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /** * 资源 * * @access private * @static * @var object */ private static $resources ; $rClass = new ReflectionClass( $module ); if ( $argumentsLength == 1) { self:: $resources ->{ $module_name } = $rClass ->newInstance(); } else { array_shift ( $arguments ); self:: $resources ->{ $module_name } = $rClass ->newInstanceArgs( $arguments ); } |
我个人不喜欢在实例化参数后还要用类的方法来初始化成员变量,于是什么参数都写在了构造函数里面了。但是由于有时候自己也不是很确认有多少个参数,所以还是用反射类来解决了这个问题。
不过这时候就有问题了,这段代码在PHP 5.2里运行正常,但是到了PHP 5.4则报出了Warming:Creating default object from empty value这样的错误。
笔者英语不怎么样,这段错误信息大概的意思应该是在一个空的上实例化默认类(反射出来的类)。虽然对脚本的运行没有太大的影响,但是毕竟也是个Warming,还是好好地解决比较好。既然系统认为我这个$resources是一个空的值,那我不妨先将其实例化成一个空类,让后再赋值。
也就是这样:
1 | self:: $resources = new stdClass(); |
stdClass 是php 的standard class,实例化一个stdClass就是实例化一个空的类,这样就不会出现之前WARMING的提示了。
嘛,毕竟变量先初始化再使用才是好的习惯啊。