2010-10-22 238 views
1

基本上我有兩個類InventoryCharacter。在清單的構建過程中,我試圖確定字符的性別,但這似乎並不適用於我...... 我在之前沒有真正使用過靜態函數,所以如果有人能指出我「M做錯了這將是非常讚賞...從另一個類調用類方法..

文件1:

class Inventory 
{ 
    protected $user_gender; 
    public function __construct($id = 0) 
    { 
     $user_gender = Character::getGenderStatic(); 
    } 
} 

文件2:

class Character 
{ 
    protected static $gender; 
    public static function getGenderStatic() { 
     return self::$gender; 
    } 
} 
+1

看起來對我來說是正確的,不知道發生了什麼問題。有沒有錯誤信息? – NikiC 2010-10-22 23:18:53

+0

在第一次使用它之前,Character :: $ gender是否已在某些靜態代碼中正確初始化? – mojuba 2010-10-22 23:23:52

+0

作爲一個後悔寫很多類充滿了靜態變量的類的人,不要這樣做。靜態使類難以擴展,測試和用作類型暗示的參數。 – 2010-10-23 03:18:22

回答

1

在構造爲Inventory你有

$user_gender = Character::getGenderStatic();

這使得多數民衆贊成作用域構造一個新的變量。你大概的意思

$this->user_gender = Character::getGenderStatic();

這是指你在類的開始定義的清單對象的保護變量。

我沒有看到你使用靜態函數的方式沒有問題,除了你沒有爲Character::$gender(你在字符類的開頭定義的受保護的靜態變量)設置一個值,但我假設你設置在別的地方。

+0

感謝羅伯特,但似乎並沒有解決它!性別在字符類中設置,並從數據庫中提取。在普通頁面上獲得性別,但在這個類別中沒有問題.... *卷眼睛* – Sean 2010-10-23 15:11:38

+0

你怎麼知道它不工作?你期望什麼特定的結果,以及發生了什麼? – Robert 2010-10-23 18:33:11

+0

基本上我正在做一個if語句,如果性別與男性相等,它會根據男性將信息插入到數據庫中。在我的例子中,Character-> user_gender does ='m',但它似乎並沒有將它拉到$ this-> user_gender中。但是它只是使用我的語句的else部分並放入女性信息中。 :if($ this-> user_gender =='m'){$ db-> query =「male base」;)} else {$ db-> query =「female base」); } – Sean 2010-10-23 20:10:44