我从official Codeigniter documentation复制了以下代码。
class Blog_model extends CI_Model {
public $title;
public $content;
public $date;
public function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
public function insert_entry()
{
$this->title = $_POST['title']; // please read the below note
$this->content = $_POST['content'];
$this->date = time();
$this->db->insert('entries', $this);
}
public function update_entry()
{
$this->title = $_POST['title'];
$this->content = $_POST['content'];
$this->date = time();
$this->db->update('entries', $this, array('id' => $_POST['id']));
}
}
请检查第3-5行:有三个名为public $title; public $content;public $date;
的属性。
它们的用途是什么?
我问了这个问题,因为即使删除它们,这些代码也能正常工作。
我已经测试了删除那些属性。我仍然可以在没有问题的情况下从Controller拨打get_last_ten_entries()
,insert_entry()
,update_entry()
功能。
答案 0 :(得分:4)
这些是公共变量
公共范围可以从对象的任何位置,其他类和实例中提供变量/函数。 (意味着一旦为其分配了值,您就可以从任何其他类或实例访问)
那你为什么还能继续使用这些功能?
get_last_ten_entries()
:此函数不需要变量insert_entry()
& update_entry()
:您正在为他们分配值。如果您请求其值而不是分配值,则会收到错误。
例如(假设您删除了公共变量),然后调用类似
的函数public function request_title(){
return $this->$title;
}
之前没有分配值。
希望这有帮助
答案 1 :(得分:0)
这些是公共变量。当你删除它们并运行你的函数get_last_ten_entries(),insert_entry()和update_entry()时,它运行正常,因为值是在变量中动态分配的。
$this->title = $_POST['title']; // please read the below note
$this->content = $_POST['content'];
$this->date = time();
这些变量是动态创建的,它运行时没有错误。
但是,如果你将使用像这样的功能 *
public function getVal(){
return $this->title;
}
*
它会抛出一个错误,因为之前没有声明这个变量。
答案 2 :(得分:0)
我认为你已经猜到了这三个属性。但是,即使从类定义中删除它仍然可以工作的原因是PHP允许动态声明的属性。这意味着您可以随时添加属性。
这是一个PHP问题,并未与CodeIgniter隔离
退房: https://www.codeigniter.com/userguide3/libraries/pagination.html