2012-01-11 71 views
0

我遇到了問題。我的PHP類結構如下:未定義的變量嘗試訪問函數中的PHP類變量時出錯

class CustomerDao{ 
... 
var $lastid; 

    function insertUser($user) 
    { 
    ... 
    $lastid = mysql_insert_id(); 
    return 0; 
    } 
     function getCustId() 
    { 
    return $lastid; 
    } 
    } 

當我使用這個類,它讓我獲得$ lastid varibale在第一功能「insertUser」,但是當我使用的第二個功能$ lastid它拋出一個錯誤。我不知道如何解決這個問題。請指導。

回答

4

在您的第一個函數中,您將創建一個名爲$lastid的新變量,該變量僅存在於該函數的範圍內離子。在第二個函數中失敗,因爲在這個函數中沒有聲明變量$lastid

要訪問班級成員,請使用符號$this->lastid

class CustomerDao { 
    ... 
    var $lastid; 

    function insertUser($user) 
    { 
     ... 
     $this->lastid = mysql_insert_id(); 
     return 0; 
    } 

    function getCustId() 
    { 
     return $this->lastid; 
    } 
} 
+0

它工作!其實我錯誤地使用$這樣的: $ this - > $ lastid; 我改正了這個樣子: $ this-> lastid; 非常感謝。 – Azeem 2012-01-11 09:45:44

7

你試圖訪問類變量,它這樣做,而不是:

function getCustId() { 
    return $this->lastid; 
} 
+0

當我使用$這與返回法則它給了我這個錯誤: 無法訪問空屬性! – Azeem 2012-01-11 09:42:00

+1

使用'$ this'時,請確保不要在屬性名稱前放置美元符號。所以不是這樣的:'$ this - > $ lastid',但是這樣做:'$ this-> lastid' – fivedigit 2012-01-11 09:44:05

+0

是的,它現在正在工作,謝謝。 – Azeem 2012-01-11 09:47:15

2

使用類變量在類中使用$this關鍵字

所以使用類裏面使用$lastid變量$this->lastid

3

你的代碼示例應該是這樣的:

class CustomerDao{ 
... 
var $lastid; 

    function insertUser($user) 
    { 
    ... 
    $this->lastid = mysql_insert_id(); 
    return 0; 
    } 
     function getCustId() 
    { 
    return $this->lastid; 
    } 
    } 

您需要參考該課程($this)以訪問其$lastid財產。所以應該是$this->lastid;

+0

它工作完美... – Azeem 2012-01-11 09:46:44

2

你想要做的是什麼:

function insertUser($user) { 
    ... 
    $this->lastid = mysql_insert_id(); 
    return 0; 
} 

function getCustId() { 
    return $this->lastid; 
} 

注意這個關鍵字。你的第一個函數起作用,因爲你在insertUser()函數中分配了一個新的(本地!)變量$lastid - 但它與類屬性$lastid無關。

+0

感謝您的澄清! – Azeem 2012-01-11 10:41:14