2014-01-05 20 views
1
class Item { 
    public $itemname; 

    somekeyword $error; //The correct keyword I want to find 

    public function insertData() { 
      $query = "INSERT INTO table VALUES ('".$this->itemname."')"; 

      try { 

        //HERE THERE IS A NICE CODE TO EXECUTE THE QUERY AND SO... 
        return true; //Returns true on success 
      } catch(PDOExecption e) { 
       $this->error = $PDOObject->errorInfo(); 
       return false; //Returns false on FAIL but the Object has a property with the error information 
      } 

    } 

} 

如何才能使該屬性錯誤僅對此類方法更改?我不希望它被其他課程或文件改變。如何使PHP類屬性只能通過一個類更改方法

關鍵字「受保護」是否可以使其可讀取但不可更改?

謝謝!

+0

題外話題,但您的代碼可能會受到sql注入的影響。 – Matthew

+0

感謝馬修,是的,我只是把它編碼爲例子,但是在實際的代碼中,我有Prepared語句和安全驗證! – JuanBonnett

回答

4

protected使得它從外部不可訪問,對於PHP中的屬性沒有隻讀的關鍵字,以獲得其價值,你必須定義getter函數:

class Item { 
    protected $error; 
    public function getError(){ 
     return $this->error; 
    } 
} 

,或者使用一些「神奇「:

class Item { 
    protected $error; 
    public function __get($name){ 
     return $this->$name; 
    } 
} 

後來的一個,你可以僅$object->error;訪問此屬性,但不易閱讀並稍微慢於預定義的函數調用。