0

最近、php バージョンが5.3の Web プロジェクトを完成させ、これを 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();
        }            
    }

そして今、再びそのエラーメッセージが来ます。任意のソリューション。

4

1 に答える 1

0

あなたの質問は不明です。以下はマニュアルからの抜粋です。 現在のクラスを var として return ステートメントに入力します (図 2 を参照)。

図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;
  }
}

おそらく、この手順に従うように関数を変更してください。

于 2013-08-25T00:43:56.527 に答える