2012-12-20 50 views
0

我有這個功能,在我的file.php插入代碼:開捕致命錯誤:類造物主的對象無法轉換爲字符串

function InsertData($nombre, $var1, $var2, $var3) 
{ 
    $file = fopen("$nombre".".php", "r+"); 
    // Seek to the end 
    fseek($file, SEEK_END, 0); 
    // Get and save that position 
    $filesize = ftell($file); 
    // Seek to half the length of the file 
    fseek($file, SEEK_SET, $filesize/1); 
    // Write your data 
    fwrite($file, "<?php 
class " ."$nombre". "\n 
{\n 
private $" ."$var1;". "\n 
private $" ."$var2;". "\n 
private $" ."$var3;". "\n 
\n\n 
    public function __construct()\n 
    {\n 
     $this->setData($" ."$var1". ", $" ."$var2". ", $" ."$var3". ");\n 
     //parent::__construct();\n 

    } 
\n\n 
    public function setData($" ."$var1". ", $" ."$var2". ", $" ."$var3". ")\n 
    {\n 
     $this->" ."$var1". "= $" ."$var1;". "\n 
     $this->" ."$var2". "= $" ."$var2;". "\n 
     $this->" ."$var3". "= $" ."$var3;". "\n 
    } 
\n\n 
    public function printData() 
    {\n 
     echo \"SomeThing : \" . $this->" ."var1". ". \" \" . $this->" ."var2". ".  \"\n\";\n 
     echo \"Other : \" . $this->" ."var3". ". \"\n\";\n 
    } 
\n\n 
} 
\n\n 
?>"); 
    // Close the file handler 
    fclose($file); 
} 

,但是當我把它稱爲我得到這個錯誤:開捕致命錯誤:類創建者的對象不能被轉換爲字符串create.php上線37

線37是:

$this->" ."$var1". "= $" ."$var1;". "\n 

IM調用它像這樣在其他文件中:

$lol = new Creator(); 
$lol->CreateFile($input); 
$lol->InsertData($input, $input1, $input2, $input3); 

我該如何解決這個問題?

+0

如果要發佈有關特定錯誤,你**必須**包括完整的錯誤消息(行號),並至少在該行的代碼和之前的那個。 –

+0

你可以發佈Creator類的其餘部分嗎? – jeremyharris

+0

對不起,我剛更新了這篇文章。 創建者班上其他同學只有這種額外功能: 函數CreateFile($農佈雷) \t { \t \t $ ourFileName = 「$ NOMBRE」 「PHP」; \t \t $ ourFileHandle = fopen($ ourFileName,'w')或死(「無法打開文件」); \t \t fclose($ ourFileHandle); \t} – Oscar

回答

0

您正在使用您嘗試生成的整個班級的錯誤引號。嘗試將雙引號"更改爲單引號'。錯誤是因爲當你使用"$this" PHP試圖呼叫$this->__toString()時,在這種情況下$this仍然是你外部代碼的一個變量。使用'$this'(單引號)只不過是簡單的字符串。

另一種解決方案是對子級以前$this加反斜槓 - "\$this"

+0

謝謝!這使它工作 – Oscar

相關問題