這應該是如此簡單。我有一個PHP類,它具有自定義方法來返回有關對象的信息。我想使用自定義方法來確定是否在對象中設置了特定參數。如果已設置,則返回該屬性。否則,該方法應聯繫數據庫以獲取信息並設置對象的屬性。PHP:無法在對象方法中設置對象屬性?
但是,每次運行下面的代碼時,都會顯示該對象的屬性未設置。 retrieve_user_first_name方法每隔時間訪問數據庫訪問對象。
我試着檢查使用is_null,空,isset屬性的值。我感覺像一個塗料。
require_once('dbaccess.class.php');
class User {
protected $user_id;
protected $first_name;
function __construct($user_id)
{
$this->user_id = $user_id;
}
function __get($variablename)
{
return $this->$variablename;
}
function __set($variablename, $variablevalue)
{
$this->$variablename = $variablevalue;
}
function __destruct()
{
}
function retrieve_user_first_name()
{
if(!isset($this->first_name)) {
$dbAccess = new DBAccess();
$strFirstName = $dbAccess->retrieve_user_first_name($this->user_id);
$this->first_name = $strFirstName;
}
else {
$strFirstName = $this->first_name;
}
return $strFirstName;
}
}
什麼是調用它的代碼?你創建的代碼是什麼確定變量沒有被設置?它看起來對我來說很好,幾乎看起來很粗糙。也許你無意中在某處實例化了一個新對象,而不是重複使用舊對象,這會破壞你的應用程序? – rockerest 2011-02-25 16:48:33
嘗試'print_r/vardump'操作後的對象...它看起來對我的眼睛沒問題。你如何維護/堅持對象? – 2011-02-25 16:49:37
你的代碼適合我。我實例化了一個User實例,然後調用了retrieve_user_first_name()兩次。第一次設置$ this-> first_name,第二次使用第一次設置的值。我的猜測是你在調用之間創建了一個新的對象實例。 – qbert220 2011-02-25 16:53:44