2011-10-05 68 views
1

認爲我需要使用反射使5.3代碼在5.2上工作,但有問題。PHP 5.3 vs PHP 5.2 - 需要反思嗎?

我們在只有PHP 5.2的服務器上,此時每個託管公司都無法升級,但由於類使用5.3語法,所以我們需要的類有5.2的問題。

這是我需要幫助的代碼:

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

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

    return $class::$instance; 
} 

我已經看到了一些關於這一點使用反射的問題的答案,但他們都是基本的例子,我不知道夠不夠轉換他們進入這裏的解決方案,但我已經嘗試過。這裏的任何專家能夠提供幫助嗎?

回答

0

在這裏,使用反射相同。

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'); 
}