Что такое использование свойства в классе модели Codeigniter?

Я скопировал следующий код из официальная документация 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() Функция от контроллера без проблем.

-5

Решение

это публичные переменные

Публичная область видимости может сделать переменную / функцию доступной из любого места, других классов и экземпляров объекта. (имеется в виду, что после присвоения им значения вы можете получить доступ из любого другого класса или объекта)

Так почему же вы все еще можете работать с функциями?

  • get_last_ten_entries(): эта функция не требует переменных
  • insert_entry() & update_entry(): Вы присваиваете им значение.

вы получите сообщение об ошибке, если вы запросите их значение вместо назначения значения.

например (при условии, что вы удалили публичные переменные), а затем вы вызываете функцию, такую ​​как

public function request_title(){
return $this->$title;
}

без присвоения значений ранее.

Надеюсь это поможет

4

Другие решения

Это публичные переменные. когда вы удаляете их и запускаете свои функции 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;
}

*

Это выдаст ошибку, потому что нет более раннего объявления этой переменной.

0

Эти три свойства, как я думаю, вы уже догадались. Но причина, по которой это все еще работает, даже если они удалены из определения класса, заключается в том, что PHP разрешает динамически объявленные свойства. Это означает, что вы можете добавлять свойства в любое время.

Это проблема PHP, не связанная с CodeIgniter

Проверять, выписываться:
Можете ли вы динамически создавать свойства экземпляра в PHP?

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector