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