energine
[ class tree: energine ] [ index: energine ] [ all elements ]

Source for file Data.class.php

Documentation is available at Data.class.php

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