Kevinblog

如鱼饮水,冷暖自知

关于Creating default object from empty value的一点小探讨

作者: kenkyoken
时间: 2012-11-03 02:11:01
分类: 脑残时刻
关键字:
php
warming
面向对象
空对象
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的提示了。
嘛,毕竟变量先初始化再使用才是好的习惯啊。

新评论:

粤ICP备15003813号-1
CopyRight © 2010-2025 by Kevin.Yuan .All rights reserved.