CLICK HERE TO BUY IT TODAY! OR GET IT FREE VIA TRIALPAY  

PHP Demo Application - Source Code

/Framework/Model/DataObjects/Structures/Recordset.php

<?php
/**
* Script Contents: Apeel_Framework_Model_DataObjects_Structures_Recordset Class
* which implements Iterator
* @package Apeel_Framework_Model_DataObjects
*/

/**
* Provides Lazy-Load Iterator functionality for a PDO result set, allowing a
* FOREACH loop through the results.  
*   
* @package      Apeel_Framework_Model_DataObjects 
* @version      1.1.0
* @author       John W. King (email: contact@apeelframework.net)
* @copyright    City Business Logic Limited 2001-2011
* @license      Dual MIT / GNU Lesser General Public License Version 3
*/
class Apeel_Framework_Model_DataObjects_Structures_Recordset implements Iterator {

    
/**
    * Data Object set by constructor.
    * 
    * @var $dataObject Object
    */    
    
public $dataObject NULL;
    
    
    
/**
    * Total number of records in the result set
    * 
    * @var integer
    */
    
public $recordCount = -1;
    
    
    
/**
    * Index pointing to next item in collection, or -1 if not yet loaded.
    * 
    * @var integer
    */
    
private $_index = -1;


    
/**
    * Holds current row in result set as associative array.
    * 
    * @var array
    */
    
private $_row NULL;
    

    
/**
    * Constructor takes a PDO Statement object and stores it internally, along
    * with the total number of matching records.  
    * 
    * @param PDO Statement Object $statement
    * @param integer $record_count
    * @return void
    */
    
public function __construct(&$dataObject$recordCount) {
        
$this->dataObject $dataObject;
        
$this->recordCount $recordCount;
    }
    
    
    
/**
    * Moves pointer to the start of the result set.  
    * 
    * @return void
    */
    
public function rewind() {
        
// If not the first iteration then re-execute the query to go back to the start.
        // If you use this functionality regularly in your project then consider using an 
        // array and use fetchall to read all results into it.  
        //   
        
if ($this->_index > -1) {
            
$this->dataObject->statement->execute();
        }
        
// Reset index
        
$this->_index = -1;
        
// Retrieve first record to determine if any data exists.  
        
$this->next();
    }    
    
    
    
/**
    * Returns current record as an associative array
    * 
    * @return array
    */
    
public function current() {
        return 
$this->_row;
    }
    

    
/**
    * Returns current row number
    * 
    * @return integer
    */
    
public function key() {
        return 
$this->_index;
    }
    
    
    
/**
    * Reads next row in result set.  
    * 
    * rewind() function reads first row of dataset to check if any data exists,
    * therefore when index is 0, no record is fetched as it has already been 
    * read.  
    * 
    * @return void
    */
    
public function next() {
        
$this->_row $this->dataObject->statement->fetch(PDO::FETCH_ASSOC);
        
$this->_index ++;
    }
    
    
    
/**
    * Returns true if there is data in the current row, or false if end of 
    * results is reached.  
    * 
    * @return boolean
    */
    
public function valid() {
        return 
$this->_row != NULL;
    }
    
    
    
/**
    * Re-executes current prepared query with current parameter values.  
    * 
    * @return void
    */
    
public function rebind() {
        
$this->dataObject->rebind();
    }
    
    
    
/**
    * Allows existing bound parameters to be updated so that the prepared query 
    * can be rebound with the new parameter values, without re-preparing the 
    * query.  
    * 
    * @param string $parameterName
    * @param mixed $value
    * @return void
    */
    
public function updateParameter($parameterName$value) {            
        
$this->dataObject->updateParameter($parameterName$value);
    }
}

?>

PHP Demo Source Code Index