Source for file Data.class.php

Documentation is available at Data.class.php

  1. /**
  2.  * Класс Data.
  3.  *
  4.  * @package energine
  5.  * @subpackage core
  6.  * @author dr.Pavka
  7.  * @copyright ColoCall 2006
  8.  * @version $Id: fsource_energine_core_frameworkData.class.php.html,v 1.1 2007/09/17 14:32:33 pavka Exp $
  9.  */
  10.  
  11. require_once 'core/framework/Object.class.php';
  12. require_once 'core/framework/Field.class.php';
  13.  
  14. /**
  15.  * Данные.
  16.  *
  17.  * @package energine
  18.  * @subpackage core
  19.  */
  20. class Data extends Object {
  21.  
  22.     /**
  23.      * @access private
  24.      * @var array поля данных
  25.      */
  26.     private $fields = array();
  27.  
  28.     /**
  29.      * @access private
  30.      * @var int количество полей данных
  31.      */
  32.     private $length = 0;
  33.  
  34.     /**
  35.      * @access private
  36.      * @var int количество строк данных
  37.      */
  38.     private $rows = 0;
  39.  
  40.     /**
  41.      * Конструктор класса.
  42.      *
  43.      * @access public
  44.      * @return void 
  45.      */
  46.     public function __construct({
  47.         parent::__construct();
  48.     }
  49.  
  50.     /**
  51.      * Загружает набор данных, полученных из БД.
  52.      *
  53.      * @access public
  54.      * @param array $data 
  55.      * @return void 
  56.      * @see DBA::selectRequest()
  57.      */
  58.     public function load(array $data{
  59.         $data inverseDBResult($data);
  60.         foreach ($data as $fieldName => $fieldValues{
  61.             $fieldObject new Field($fieldName);
  62.             $fieldObject->setData($fieldValues);
  63.             $this->addField($fieldObject);
  64.         }
  65.     }
  66.  
  67.     /**
  68.      * Добавляет строку данных ко всем полям.
  69.      *
  70.      * @access public
  71.      * @param array $rowData 
  72.      * @return void 
  73.      */
  74.     public function addRow(array $rowData{
  75.         foreach ($rowData as $fieldName => $fieldValue{
  76.             $field $this->getFieldByName($fieldName);
  77.             if ($field{
  78.                 $field->addRowData($fieldValue);
  79.             }
  80.         }
  81.     }
  82.  
  83.     /**
  84.      * Удаляет строку данных из всех полей.
  85.      *
  86.      * @access public
  87.      * @param int $rowIndex 
  88.      * @return void 
  89.      */
  90.     public function removeRow($rowIndex{
  91.         foreach ($this->fields as $field{
  92.             $field->removeRowData($rowIndex);
  93.         }
  94.     }
  95.  
  96.     /**
  97.      * Изменяет строку данных для всех полей.
  98.      *
  99.      * @access public
  100.      * @param int $rowIndex 
  101.      * @param array $rowData 
  102.      * @return boolean 
  103.      */
  104.     public function changeRow($rowIndexarray $rowData{
  105.         $result false;
  106.         foreach ($rowData as $fieldName => $fieldValue{
  107.             $field $this->getFieldByName($fieldName);
  108.             if ($field{
  109.                 $result $field->changeRowData($rowIndex$fieldValue);
  110.             }
  111.         }
  112.         return $result;
  113.     }
  114.  
  115.     /**
  116.      * Добавляет поле данных.
  117.      *
  118.      * @access public
  119.      * @param Field $field 
  120.      * @return void 
  121.      */
  122.     public function addField(Field $field{
  123.         $this->fields[$field->getName()$field;
  124.         $this->length++;
  125.     }
  126.  
  127.     /**
  128.      * Удаляет поле данных.
  129.      *
  130.      * @access public
  131.      * @param Field $field 
  132.      * @return void 
  133.      */
  134.     public function removeField(Field $field{
  135.         if (isset($this->fields[$field->getName()])) {
  136.             unset($this->fields[$field->getName()]);
  137.             $this->length--;
  138.         }
  139.     }
  140.  
  141.     /**
  142.      * Возвращает поле с указанным именем.
  143.      *
  144.      * @access public
  145.      * @param string $name 
  146.      * @return Field 
  147.      */
  148.     public function getFieldByName($name{
  149.         $field false;
  150.         if (isset($this->fields[$name])) {
  151.             $field $this->fields[$name];
  152.         }
  153.         return $field;
  154.     }
  155.  
  156.     /**
  157.      * Возвращает набор полей данных.
  158.      *
  159.      * @access public
  160.      * @return array 
  161.      */
  162.     public function getFields({
  163.         return $this->fields;
  164.     }
  165.  
  166.     /**
  167.      * Возвращает количество полей данных.
  168.      *
  169.      * @access public
  170.      * @return int 
  171.      */
  172.     public function getLength({
  173.         return $this->length;
  174.     }
  175.  
  176.     /**
  177.      * Возвращает количество строк данных.
  178.      *
  179.      * @return int 
  180.      * @access public
  181.      */
  182.     public function getRowCount({
  183.         if ($this->length 0{
  184.             $fieldNames = array_keys($this->fields);
  185.             $firstFieldName $fieldNames[0];
  186.             $this->rows $this->getFieldByName($firstFieldName)->getRowCount();
  187.         }
  188.         return $this->rows;
  189.     }
  190. }

Documentation generated on Mon, 17 Sep 2007 13:26:21 +0300 by phpDocumentor 1.4.0a2