PHP 5.3 против PHP 5.2 - нужно отражение? - PullRequest
1 голос
/ 05 октября 2011

Думаю, мне нужно использовать отражение, чтобы заставить этот код 5.3 работать на 5.2, но у него есть проблемы.

Мы находимся на сервере, на котором установлен только PHP 5.2, в настоящее время обновление для каждой хостинговой компании невозможно, но у класса, который нам нужен, есть проблемы с 5.2, так как класс использует синтаксис 5.3.

Вот код, с которым мне нужна помощь:

static public function instance($class) {
    if (!isset($class::$instance)) {
        $class::$instance = new $class();
        $class::$instance->initialize();

        MobileHelper::registerDevice($class::$instance);
    }

    return $class::$instance;
}

Я видел несколько ответов на вопросы, которые отмечают использование рефлексии, но все они являются основными примерами, я не знаю достаточно, чтобы преобразовать их в решение здесь, но я попробовал. Любой специалист здесь может помочь в этом?

1 Ответ

0 голосов
/ 04 сентября 2012

Здесь, то же самое, используя Reflection.

static public function instance($class) {
    $ref = new ReflectionClass($class);
    if (!$ref->getStaticPropertyValue('instance')){
        $ref->setStaticPropertyValue('instance', new $class());
        $obj = $ref->getStaticPropertyValue('instance');
        $obj->initialize();
        MobileHelper::registerDevice($obj);
    }
    return $ref->getStaticPropertyValue('instance');
}
...