PHP OOP - 返回了错误的对象

时间:2011-05-08 21:23:04

标签: php oop class object

使用以下代码:

<?php
class Loader {
    private static $instances;

    function __construct($class = null) {
        return self::instance($class);
    }

    public static function instance($class) {
        if(!isset(self::$instances[$class])) {
            self::$instances[$class] = new $class();
        }

        return self::$instances[$class];
    }
}

class Core {
}

$core = new Loader('Core');
print_r($core);

?>

我的print_r()返回对象Loader而不是对象Core,它在构造Loader后实例化。

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

嗯?

如果你这样做

$core = new Loader('Core');

然后$ core将成为Loader的一个实例...... PS:构造函数不返回值。

您根本不需要实例化Loader。

这样做:

<?php
class Loader {
    private static $instances;

    public static function instance($class) {
        if(!isset(self::$instances[$class])) {
            self::$instances[$class] = new $class();
        }

        return self::$instances[$class];
    }
}

class Core {
}

$core = Loader::instance('Core');
print_r($core);

或者你可以做得更简单:

<?php
function Load($class)
{
    static $instances;
    if(!isset($instances[$class]))
         $instances[$class] = new $class();
    return $instances[$class];
}

class Core {
}

$core = Load('Core');
print_r($core);