2013-10-08 32 views
2

我有一個PHP版本4的服務器上的腳本。現在它被更改爲php5,腳本不再工作。我得到這個錯誤:

致命錯誤:不能重新分配$這URL爲database.php線88

在該文件中是具有功能的類。裏面是線88:

$this = new $db($serv, $user, $pass, $dbName); 

錯誤是什麼意思,我怎麼能改變它?

+0

HTTP://us1.php。 net/manual/en/language.oop5.basic.php這裏有一個$ this的解釋。 – vascowhite

回答

3

$this是一個特殊的「可變的」總是指對象當前功能在執行它僅使內屬於某個類函數感。然而,你不能在任何其他地方使用它,並且你可能永遠不會分配它。解決方法是簡單地重命名該變量。

+0

好吧,我把它改名爲DBO,但只給了我一個新的錯誤: 致命錯誤:調用未定義功能:doquery()的URL QuizOperations.php上線524 線524 $這個 - > DB- > doQuery(.....); 有幾個功能類似的行。 如果我將這些變量更改爲dbo,則會得到相同的錯誤消息。 – Atha

+0

@Atha:這是你自己的代碼或你從其他地方獲得的代碼嗎?它是爲PHP 4還是PHP 5編寫的?無論如何,這個問題的根源有點難以從這條線上得出,因爲它是一種不同的錯誤,所以最好把它作爲一個新問題發佈。 –

0

該班正試圖重新定義自己(在PHP中的$ this與在C#中的this相同)並且無法完成。您應該將$this更改爲其他內容,然後錯誤應該消失。

0

$this是一個保留的變量名稱,不能手動賦值。

0

$ this是PHP中的一個預定義變量。

以下是PHP手冊中的參考:類和對象:基礎知識。它描述了在一個方法內,$ this指向正在被操作的「this object」。不過,它仍然保留在方法之外。

將標識符更改爲另一個單詞。

1

您可以通過可變的變量

$name = 'this'; 
$$name = 'stack'; 
echo $this; 

重新分配$這個值//這將導致堆棧

0

您可以使用refrences招:

$thisRef = &$this; 
$thisRef = new $db($serv, $user, $pass, $dbName);