Я скопировал следующий код из официальная документация Codeigniter.
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;
,
Какая польза от них?
Я задал этот вопрос, потому что эти коды отлично работают даже при их удалении.
Я проверил это, удалив те там свойства. Еще могу позвонить get_last_ten_entries()
, insert_entry()
, update_entry()
Функция от контроллера без проблем.
это публичные переменные
Публичная область видимости может сделать переменную / функцию доступной из любого места, других классов и экземпляров объекта. (имеется в виду, что после присвоения им значения вы можете получить доступ из любого другого класса или объекта)
Так почему же вы все еще можете работать с функциями?
get_last_ten_entries()
: эта функция не требует переменныхinsert_entry()
& update_entry()
: Вы присваиваете им значение.вы получите сообщение об ошибке, если вы запросите их значение вместо назначения значения.
например (при условии, что вы удалили публичные переменные), а затем вы вызываете функцию, такую как
public function request_title(){
return $this->$title;
}
без присвоения значений ранее.
Надеюсь это поможет
Это публичные переменные. когда вы удаляете их и запускаете свои функции 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;
}
*
Это выдаст ошибку, потому что нет более раннего объявления этой переменной.
Эти три свойства, как я думаю, вы уже догадались. Но причина, по которой это все еще работает, даже если они удалены из определения класса, заключается в том, что PHP разрешает динамически объявленные свойства. Это означает, что вы можете добавлять свойства в любое время.
Это проблема PHP, не связанная с CodeIgniter
Проверять, выписываться:
Можете ли вы динамически создавать свойства экземпляра в PHP?