2013-03-23 4 views
1

Возвращая объекты из базы данных, по умолчанию методы Codeigniter возвращают объекты (т. Е. $this->db->result() против $this->db->result_array(), и то же самое для row/row_array).Объекты и массивы Codeigniter

Я разработчик по интересам, а не по образованию, поэтому извините меня, если это глупый вопрос, но какое это имеет значение, на что он вернется, и почему предпочтение, основанное на соглашении об именах, похоже, предпочитает объекты по массивам, когда из того, что я могу сказать, разработчики php любят массивы?

Я сделал некоторое чтение фона, и, похоже, с PHP 5+ различие в исполнении массивов и объектов пренебрежимо мало. Пока единственная разница, с которой я столкнулся, - ->, а не [].

Этот вопрос, скорее всего, не относится к Codeigniter, но это моя система координат.

ответ

0

Я не уверен в истории за тем, почему api получил этот способ, но если вы извлечете объекты, вы можете сделать CI db lib, чтобы создать пользовательские классы с данными, например, различные родные PHP *_fetch_object().

$query = $this->db->query("SELECT * FROM users;"); 
foreach ($query->result('User') as $row) { 
    // $row is not an instance of User 
} 

по умолчанию stdObject s не слишком полезно, хотя, на мой взгляд ArrayObject был бы лучшим решением, так как те, поддерживают как -> и [] доступ, но CI приходят от PHP4 эпохи, когда те не были вокруг.