【发布时间】:2014-10-06 22:36:34
【问题描述】:
CI 客户对象究竟是如何工作的?
根据 CI 文档,您还可以将字符串传递给 result(),它表示要为每个结果对象实例化的类(注意:必须加载此类)
$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,但我不希望 codeigniter 为我填充类属性,而是希望类接收这些属性并以他合适的方式自行填充。
【问题讨论】:
标签: php codeigniter oop codeigniter-2