PHP OOP - 返回了错误的对象

Gab*_*tos 0 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);

?>
Run Code Online (Sandbox Code Playgroud)

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

感谢帮助!

peu*_*feu 8

嗯?

如果你这样做

$core = new Loader('Core');
Run Code Online (Sandbox Code Playgroud)

然后$ 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);
Run Code Online (Sandbox Code Playgroud)

或者你可以做得更简单:

<?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);
Run Code Online (Sandbox Code Playgroud)