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. @copyright  2005-2010 Laurent Jouanneau
  7. @link      http://www.jelix.org
  8. @licence    http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public Licence, see LICENCE file
  9. */
  10.  
  11. /**
  12.  * represent a statement
  13.  * @package  jelix
  14.  * @subpackage db
  15.  */
  16. abstract class jDbResultSet implements Iterator {
  17.  
  18.     protected $_idResult=null;
  19.     protected $_fetchMode = 0;
  20.     protected $_fetchModeParam = null;
  21.     protected $_fetchModeCtoArgs = null;
  22.  
  23.     function __construct ($idResult{
  24.         $this->_idResult = $idResult;
  25.     }
  26.  
  27.     function __destruct(){
  28.         if ($this->_idResult){
  29.             $this->_free ();
  30.             $this->_idResult = null;
  31.         }
  32.     }
  33.  
  34.     public function id(return $this->_idResult}
  35.  
  36.     /**
  37.      * @param string $text a binary string to unescape
  38.      * @since 1.1.6
  39.      */
  40.     public function unescapeBin($text{
  41.         return $text;
  42.     }
  43.  
  44.     /**
  45.      * a callback function which will modify on the fly record's value
  46.      * @var array of callback
  47.      * @since 1.1.6
  48.      */
  49.     protected $modifier = array();
  50.  
  51.     /**
  52.      * @param callback $function a callback function
  53.      *      the function should accept in parameter the record,
  54.      *      and the resulset object
  55.      * @since 1.1.6
  56.      */
  57.     public function addModifier($function{
  58.         $this->modifier[$function;
  59.     }
  60.  
  61.     /**
  62.     * set the fetch mode.
  63.     * @param integer  $fetchmode   FETCH_OBJ, FETCH_CLASS or FETCH_INTO
  64.     * @param string|object    $param   class name if FETCH_CLASS, an object if FETCH_INTO. else null.
  65.     * @param array  $ctoargs  arguments for the constructor if FETCH_CLASS
  66.     */
  67.     public function setFetchMode($fetchmode$param=null$ctoargs=null){
  68.         $this->_fetchMode = $fetchmode;
  69.         $this->_fetchModeParam = $param;
  70.         $this->_fetchModeCtoArgs = $ctoargs;
  71.     }
  72.     /**
  73.      * fetch a result. The result is returned as an object.
  74.      * @return object|booleanresult object or false if there is no more result
  75.      */
  76.     public function fetch(){
  77.         $result $this->_fetch ();
  78.  
  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 Mon, 19 Sep 2011 14:12:29 +0200 by phpDocumentor 1.4.3