1
CI custome對象的工作原理是什麼?Codeigniter查詢結果返回帶設置者的自定義結果對象
按照CI文檔,你也可以傳遞一個字符串,導致()代表一個類實例化的每個結果對象(注:這個類必須被加載)
$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $row)
{
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
}
}
這是一個非常不錯的功能但是Ci所做的卻是返回一個User
對象的數組,並將行中的屬性設置爲它。
我有一個問題,我想要更多的控制什麼屬性被公開訪問和什麼被修改之前設置/獲取。
我該如何做到這一點?我可以告訴CI將所有屬性傳遞給構造函數,以便類可以填充它自己的數據嗎?
例如類用戶
class User{
private $data=array();
protected $CI;
//public $id,$name,$dob,$gender,$role,$username,$password,$salt,$picture,$lastactive;
function __construct($data=null)
{
$this->data = $data; // i want to save data to a private var and allow attr. throu getters only
}
function set_password($p){
$this->generateSalt();
$this->data->password = $p.$this->data->salt;
}
}
簡而言之::
我想用custom_result_object但我不想笨來填充我的類屬性,而不是我想要的類來接收這些ATTRS和用它適合的方式將它自己填充。
我很自豪CI社區仍然活躍:)。謝謝 – Zalaboza 2015-09-22 10:03:10
然而,你把user_item類放在哪裏?在圖書館? – NaturalBornCamper 2016-04-25 04:41:07
@NaturalBornCamper我將它放在與User_model相同的文件中。所以當你執行'$ this-> load-> model('user')'時,它會自動加載。 – sulaiman 2016-04-27 06:33:14