PHP Classes

File: vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php

Recommend this page to a friend!
  Classes of Adrian M   upMVC   vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php   Download  
File: vendor/gabordemooij/redbean/RedBeanPHP/BeanCollection.php
Role: Class source
Content type: text/plain
Description: Class source
Class: upMVC
Pure PHP web development without other frameworks
Author: By
Last change:
Date: 1 month ago
Size: 2,600 bytes
 

Contents

Class file image Download
<?php

namespace RedBeanPHP;

use
RedBeanPHP\Cursor as Cursor;
use
RedBeanPHP\Repository as Repository;

/**
 * BeanCollection.
 *
 * The BeanCollection represents a collection of beans and
 * makes it possible to use database cursors. The BeanCollection
 * has a method next() to obtain the first, next and last bean
 * in the collection. The BeanCollection does not implement the array
 * interface nor does it try to act like an array because it cannot go
 * backward or rewind itself.
 *
 * Use the BeanCollection for large datasets where skip/limit is not an
 * option. Keep in mind that ID-marking (querying a start ID) is a decent
 * alternative though.
 *
 * @file RedBeanPHP/BeanCollection.php
 * @author Gabor de Mooij and the RedBeanPHP community
 * @license BSD/GPLv2
 *
 * @copyright
 * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community
 * This source file is subject to the BSD/GPLv2 License that is bundled
 * with this source code in the file license.txt.
 */
class BeanCollection
{
   
/**
     * @var Cursor
     */
   
protected $cursor = NULL;

   
/**
     * @var Repository
     */
   
protected $repository = NULL;

   
/**
     * @var string
     */
   
protected $type = NULL;

   
/**
     * @var string
     */
   
protected $mask = NULL;

   
/**
     * Constructor, creates a new instance of the BeanCollection.
     *
     * @param string $type type of beans in this collection
     * @param Repository $repository repository to use to generate bean objects
     * @param Cursor $cursor cursor object to use
     * @param string $mask meta mask to apply (optional)
     *
     * @return void
     */
   
public function __construct( $type, Repository $repository, Cursor $cursor, $mask = '__meta' )
    {
       
$this->type = $type;
       
$this->cursor = $cursor;
       
$this->repository = $repository;
       
$this->mask = $mask;
    }

   
/**
     * Returns the next bean in the collection.
     * If called the first time, this will return the first bean in the collection.
     * If there are no more beans left in the collection, this method
     * will return NULL.
     *
     * @return OODBBean|NULL
     */
   
public function next()
    {
       
$row = $this->cursor->getNextItem();
        if (
$row ) {
           
$beans = $this->repository->convertToBeans( $this->type, array( $row ), $this->mask );
            return
reset( $beans );
        }
        return
NULL;
    }

   
/**
     * Resets the collection from the start, like a fresh() on a bean.
     *
     * @return void
     */
   
public function reset()
    {
       
$this->cursor->reset();
    }

   
/**
     * Closes the underlying cursor (needed for some databases).
     *
     * @return void
     */
   
public function close()
    {
       
$this->cursor->close();
    }
}