PHP Class lithium\data\source\Result

Just a forward-only cursor is required, not necessarily a rolling cursor. Not all data sources can support rolling cursors, that's why forward-only cursors have been chosen here as the least common denominator for the abstraction. Rolling cursors cannot be emulated from an underlying forward-only cursor in a (memory) efficient way. Result does not try to and will deliberately not keep already yielded results in an internal cache. To allow full (back and forth) iteration over the yielded results, a wrapping class (i.e. Collection) may keep such a cache while draining the Result from outside. Because of these characteristics an instance of Result may be used only once. After draining the result it cannot be rewinded or reset. This is similar to the behavior of the NoRewindIterator, where rewind calls have no effect. The first result will be eager loaded from the cursor, as it is expected the result will be used at least once. The class also provides a mechanism which buffers results when peeking for next ones. The buffered results will then be used when continuing to iterate over the result object.
Inheritance: extends lithium\core\Object, implements Iterator
Datei anzeigen Open project: unionofrad/lithium Class Usage Examples

Protected Properties

Property Type Description
$_autoConfig array Autoconfig.
$_buffer array Buffer results of query before returning / iterating. Allows consumers to 'peek' at results.
$_current mixed Contains the current element of the result set.
$_iterator integer The current position of the iterator.
$_key integer | null Key of the current result.
$_resource object | resource | null The bound resource.
$_valid boolean Indicates whether the current position is valid or not.

Public Methods

Method Description
__destruct ( ) : void Destructor.
close ( ) : void Close the resource.
current ( ) : array Contains the current result.
key ( ) : integer | null Returns the current key position on the result.
next ( ) : mixed Fetches the next element from the resource.
peek ( ) : mixed Peeks at the next element in the resource without advancing Result's cursor.
resource ( ) : object | resource Returns the used resource.
rewind ( ) : void Noop to fulfill the Iterator interface. Result is forward-only.
valid ( ) : boolean Checks if current position is valid.

Protected Methods

Method Description
_fetch ( ) : array | boolean | null Fetches the next result from the resource.
_init ( ) : void Initializer. Eager loads the first result.

Method Details

__destruct() public method

Destructor.
public __destruct ( ) : void
return void

_fetch() abstract protected method

Fetches the next result from the resource.
abstract protected _fetch ( ) : array | boolean | null
return array | boolean | null Returns a key/value pair for the next result, `null` if there is none, `false` if something bad happened.

_init() protected method

Initializer. Eager loads the first result.
protected _init ( ) : void
return void

close() public method

Close the resource.
public close ( ) : void
return void

current() public method

Contains the current result.
public current ( ) : array
return array The current result (or `null` if there is none).

key() public method

Returns the current key position on the result.
public key ( ) : integer | null
return integer | null The current key position or `null` if there is none.

next() public method

Fetches the next element from the resource.
public next ( ) : mixed
return mixed The next result (or `null` if there is none).

peek() public method

Peeks at the next element in the resource without advancing Result's cursor.
public peek ( ) : mixed
return mixed The next result (or `null` if there is none).

resource() public method

Returns the used resource.
public resource ( ) : object | resource
return object | resource

rewind() public method

Noop to fulfill the Iterator interface. Result is forward-only.
public rewind ( ) : void
return void

valid() public method

Checks if current position is valid.
public valid ( ) : boolean
return boolean `true` if valid, `false` otherwise.

Property Details

$_autoConfig protected_oe property

Autoconfig.
protected array $_autoConfig
return array

$_buffer protected_oe property

Buffer results of query before returning / iterating. Allows consumers to 'peek' at results.
protected array $_buffer
return array

$_current protected_oe property

Contains the current element of the result set.
protected mixed $_current
return mixed

$_iterator protected_oe property

The current position of the iterator.
protected int $_iterator
return integer

$_key protected_oe property

Key of the current result.
protected int|null $_key
return integer | null

$_resource protected_oe property

The bound resource.
protected object|resource|null $_resource
return object | resource | null

$_valid protected_oe property

Indicates whether the current position is valid or not.
See also: lithium\data\source\Result::valid()
protected bool $_valid
return boolean