Codeigniter模型类中的属性用法是什么?

时间:2017-09-11 07:34:33

标签: php codeigniter

我从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()功能。

3 个答案:

答案 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