PHP OOP - возвращен неверный объект - PullRequest
0 голосов
/ 09 мая 2011

со следующим кодом:

<?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);

?>

my print_r () возвращает объект Loader вместо объекта Core, который создается после создания Loader.

Спасибо за помощь!

1 Ответ

8 голосов
/ 09 мая 2011

Хм?

Если вы делаете

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...