Source for file jDbResultSet.class.php

Documentation is available at jDbResultSet.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage db
  5. @author      Laurent Jouanneau
  6. @contributor
  7. @copyright  2005-2010 Laurent Jouanneau
  8. @link      http://www.jelix.org
  9. @licence    http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  10. */
  11.  
  12. /**
  13.  * represent a statement
  14.  * @package  jelix
  15.  * @subpackage db
  16.  */
  17. abstract class jDbResultSet implements Iterator {
  18.  
  19.     protected $_idResult=null;
  20.     protected $_fetchMode = 0;
  21.     protected $_fetchModeParam = null;
  22.     protected $_fetchModeCtoArgs = null;
  23.  
  24.     function __construct ($idResult{
  25.         $this->_idResult = $idResult;
  26.     }
  27.  
  28.     function __destruct(){
  29.         if ($this->_idResult){
  30.             $this->_free ();
  31.             $this->_idResult = null;
  32.         }
  33.     }
  34.  
  35.     public function id(return $this->_idResult}
  36.  
  37.     /**
  38.      * @param string a binary string to unescape
  39.      * @since 1.1.6
  40.      */
  41.     public function unescapeBin($text{
  42.         return $text;
  43.     }
  44.  
  45.     /**
  46.      * a callback function which will modify on the fly record's value
  47.      * @var array of callback
  48.      * @since 1.1.6
  49.      */
  50.     protected $modifier = array();
  51.  
  52.     /**
  53.      * @param callback $function a callback function
  54.      *      the function should accept in parameter the record,
  55.      *      and the resulset object
  56.      * @since 1.1.6
  57.      */
  58.     public function addModifier($function{
  59.         $this->modifier[$function;
  60.     }
  61.  
  62.     /**
  63.     * set the fetch mode.
  64.     * @param integer  $fetchmode   FETCH_OBJ, FETCH_CLASS or FETCH_INTO
  65.     * @param string|object    $param   class name if FETCH_CLASS, an object if FETCH_INTO. else null.
  66.     * @param array  $ctoargs  arguments for the constructor if FETCH_CLASS
  67.     */
  68.     public function setFetchMode($fetchmode$param=null$ctoargs=null){
  69.         $this->_fetchMode = $fetchmode;
  70.         $this->_fetchModeParam = $param;
  71.         $this->_fetchModeCtoArgs = $ctoargs;
  72.     }
  73.     /**
  74.      * fetch a result. The result is returned as an object.
  75.      * @return object|booleanresult object or false if there is no more result
  76.      */
  77.     public function fetch(){
  78.         $result $this->_fetch ();
  79.         if (!$result)
  80.             return $result;
  81.  
  82.         if (count($this->modifier)) {
  83.             foreach($this->modifier as $m)
  84.                 call_user_func_array($marray($result$this));
  85.         }
  86.  
  87.         if ($this->_fetchMode == jDbConnection::FETCH_OBJ)
  88.             return $result;
  89.         
  90.         if ($this->_fetchMode == jDbConnection::FETCH_CLASS{
  91.             if ($result instanceof $this->_fetchModeParam)
  92.                 return $result;
  93.             $values get_object_vars ($result);
  94.             $o $this->_fetchModeParam;
  95.             $result new $o();
  96.             foreach $values as $k=>$value){
  97.                 $result->$k $value;
  98.             }
  99.         }
  100.         else if ($this->_fetchMode == jDbConnection::FETCH_INTO{
  101.             $values get_object_vars ($result);
  102.             $result $this->_fetchModeParam;
  103.             foreach $values as $k=>$value){
  104.                 $result->$k $value;
  105.             }
  106.         }
  107.         return $result;
  108.     }
  109.  
  110.     /**
  111.      * Return all results in an array. Each result is an object.
  112.      * @return array 
  113.      */
  114.     public function fetchAll(){
  115.         $result=array();
  116.         while($res =  $this->fetch ()){
  117.             $result[$res;
  118.         }
  119.         return $result;
  120.     }
  121.  
  122.     /**
  123.      * not implemented
  124.      */
  125.     public function getAttribute($attr){return null;}
  126.     /**
  127.      * not implemented
  128.      */
  129.     public function setAttribute($attr$value){}
  130.  
  131.     /**
  132.      * not implemented
  133.      */
  134.     abstract public function bindColumn($column&$param $type=null );
  135.     /**
  136.      * not implemented
  137.      */
  138.     abstract public function bindParam($parameter&$variable $data_type =null$length=null,  $driver_options=null);
  139.     /**
  140.      * not implemented
  141.      */
  142.     abstract public function bindValue($parameter$value$data_type);
  143.     /**
  144.      * not implemented
  145.      */
  146.     abstract public function columnCount();
  147.  
  148.     /**
  149.      * not implemented
  150.      */
  151.     abstract public function execute($parameters=null);
  152.  
  153.     abstract public function rowCount();
  154.  
  155.     abstract protected function _free ();
  156.     abstract protected function _fetch ();
  157.     abstract protected function _rewind ();
  158.  
  159.     //--------------- interface Iterator
  160.     protected $_currentRecord = false;
  161.     protected $_recordIndex = 0;
  162.  
  163.     public function current ({
  164.         return $this->_currentRecord;
  165.     }
  166.  
  167.     public function key ({
  168.         return $this->_recordIndex;
  169.     }
  170.  
  171.     public function next ({
  172.         $this->_currentRecord =  $this->fetch ();
  173.         if($this->_currentRecord)
  174.             $this->_recordIndex++;
  175.     }
  176.  
  177.     public function rewind ({
  178.         $this->_rewind();
  179.         $this->_recordIndex = 0;
  180.         $this->_currentRecord =  $this->fetch ();
  181.     }
  182.  
  183.     public function valid ({
  184.         return ($this->_currentRecord != false);
  185.     }
  186.  
  187. }

Documentation generated on Thu, 22 Mar 2012 22:15:21 +0100 by phpDocumentor 1.4.3