Exemplo n.º 1
0
 /**
  * 获取指定的对象,如果没有数据则尝试从资源中创建数据
  *
  * 无可用数据则返回false
  *
  * @param $group_id
  * @param $index
  * @return OOP_ORM_Data|null
  */
 protected function get_offset_data($index)
 {
     if (!isset($this->data[$index])) {
         if (!$this->resource || !$this->finder) {
             return null;
         }
         # 从数据库中获取
         $data = $this->resource->offsetGet($index);
         # 返回是null,则seek看是否对应指针数据不存在
         if (null === $data && false === $this->resource->seek($index)) {
             return null;
         }
         # 使用获取的数据创建新对象
         $this->data[$index] = $this->finder->create($data, isset($this->option['is_field_key']) ? $this->option['is_field_key'] : true, $this->id);
         if ($this->option['count'] == count($this->data)) {
             # 获取完所有数据后就可以直接释放资源,不用等到对象被消毁
             $this->release_resource();
             # 重新排序,避免排序错乱
             ksort($this->data, SORT_NUMERIC);
         }
     }
     return $this->data[$index];
 }