2013-08-25 96 views
0

最近我已經完成了一個web項目,其中php版本是5.3,然後我上傳到服務器,其中php版本是5.2。*。然後顯示以下信息:get_called_class in php 5.2 *

Fatal error: Class name must be a valid object or a string in /home/user_folder/public_html/_includes/class.myclass.php on line 264 

在我class.myclass.php我用下面的代碼::

protected function get_table_value($record) { 
    $className = get_called_class(); // 

    $object = new $className; // line 264 
    // rest of the code 
} 

然後我改變了代碼如下::

// get the database table's column's value 
    protected function get_table_value($record) { 
     $className = $this->generate_class_name(); 
     $object = new $className; // same error in this line 

     // rest of code 
    } 

    private function generate_class_name() { 

     if (!function_exists('get_called_class')) { 
      $bt = debug_backtrace(); 
      $l = count($bt) - 1; 
      $matches = array(); 
      while(empty($matches) && $l > -1){ 
       $lines = file($bt[$l]['file']); 
       $callerLine = $lines[$bt[$l]['line']-1]; 
       preg_match('/([a-zA-Z0-9\_]+)::'.$bt[$l--]['function'].'/', 
       $callerLine, 
       $matches); 
      } 
      if (!isset($matches[1])) $matches[1]=NULL; //for notices 
       if ($matches[1] == 'self') { 
       $line = $bt[$l]['line']-1; 
       while ($line > 0 && strpos($lines[$line], 'class') === false) { 
       $line--; 
      } 
      preg_match('/class[\s]+(.+?)[\s]+/si', $lines[$line], $matches); 
      } 
     return $matches[1];    
     } 
     else {     
      return get_called_class(); 
     }    
    } 

現在再次說明錯誤消息來了。任何解決方案

回答

0

你的問題還不清楚。以下是本手冊的摘錄:Get_Class(); 這些都將輸入當前類爲return語句作爲一個VAR(見fig2):

圖1

class foo { 
    function name() 
    { 
     echo "My name is " , get_class($this) , "\n"; 
    } 
} 

// create an object 
$bar = new foo(); 

// external call 
echo "Its name is " , get_class($bar) , "\n"; 

// internal call 
$bar->name(); 

圖2

class foo{ 
    public function Test(){ 
    $Classname = get_class($this); 
    $Instance = new $Classname; 
    return $Classname; 
    } 
} 

也許修改您的功能以遵循此過程。

+0

它的工作原理。很多很多謝了 – sabbir