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

Source for file Object.class.php

Documentation is available at Object.class.php

  1. <?php
  2.  
  3. /**
  4.  * Класс Object.
  5.  *
  6.  * @package energine
  7.  * @subpackage core
  8.  * @author 1m.dm
  9.  * @copyright Energine 2006
  10.  * @version $Id$
  11.  */
  12.  
  13.  
  14. /**
  15.  * Родительский класс для всех объектов системы.
  16.  * Обеспечивает общую функциональность объектов
  17.  * измерение времени выполнения и загрузку данных из конфигурационного файла
  18.  *
  19.  * @package energine
  20.  * @subpackage core
  21.  * @author 1m.dm
  22.  * @abstract
  23.  */
  24. abstract class Object {
  25.     /**
  26.      * Путь к файлу конфигурации
  27.      */
  28.     const CONFIG_DIR 'site/';
  29.  
  30.     /**
  31.      * Имя файла конфигурации
  32.      */
  33.     const CONFIG_FILE 'system.config.xml';
  34.  
  35.     /**
  36.      * @access private
  37.      * @static
  38.      * @var SimpleXMLElement конфигурация системы
  39.      */
  40.     private static $systemConfig;
  41.     /**
  42.      * @access private
  43.      * @static
  44.      * @var array кеш для значений конфига
  45.      */
  46.     private static $values array();
  47.  
  48.  
  49.     /**
  50.      * @access private
  51.      * @var float счетчик времени выполнения
  52.      */
  53.     private $executionTime;
  54.  
  55.     /**
  56.       * Пустой конструктор
  57.       *
  58.       * @return void 
  59.       * @access public
  60.       */
  61.  
  62.      public function __construct({
  63.  
  64.      }
  65.  
  66.     /**
  67.      * Запускает счетчик времени выполнения.
  68.      *
  69.      * @access public
  70.      * @return void 
  71.      */
  72.     public function startTimer({
  73.         $this->executionTime = microtime(true);
  74.     }
  75.  
  76.     /**
  77.      * Останавливает счетчик времени выполнения.
  78.      *
  79.      * @access public
  80.      * @return float 
  81.      */
  82.     public function stopTimer({
  83.         return ($this->executionTime = microtime(true$this->executionTime);
  84.     }
  85.  
  86.     /**
  87.      * Сбрасывает счетчик времени, возвращает предыдущее значение счетчика
  88.      *
  89.      * @return float 
  90.      * @access public
  91.      */
  92.  
  93.     public function resetTimer({
  94.         $result $this->stopTimer();
  95.         $this->startTimer();
  96.         return $result;
  97.     }
  98.  
  99.     /**
  100.      * Возвращает значение счетчика времени выполнения.
  101.      *
  102.      * @access public
  103.      * @return float 
  104.      */
  105.     public function getTimer({
  106.         return $this->executionTime;
  107.     }
  108.  
  109.     /**
  110.      * Возвращает значение указанного параметра конфигурации.
  111.      * Конфигурация представляет из себя дерево параметров;
  112.      * в качестве разделителя уровней дерева используется точка.
  113.      * Пример:
  114.      *     Object::_getConfigValue('database.dsn');
  115.      *
  116.      * @access public
  117.      * @static
  118.      * @param string $paramPath путь к параметру в дереве конфигурации
  119.      * @return string 
  120.      */
  121.     public static function _getConfigValue($paramPath{
  122.         $value null;
  123.         
  124.         //при первом обращении загружает SimpleXML данные в  статическую переменную $systemConfig
  125.         if (!isset(self::$systemConfig)) {
  126.             if (!file_exists(self::CONFIG_DIR.self::CONFIG_FILE)) {
  127.                 trigger_error('ERR_DEV_NO_CONFIG'E_USER_ERROR);
  128.             }
  129.             self::$systemConfig simplexml_load_file(self::CONFIG_DIR.self::CONFIG_FILE);
  130.         }
  131.         $paramPath str_replace('.''->'trim($paramPath));
  132.         
  133.         if(!isset(self::$values[$paramPath])){
  134.             eval("\$value = self::\$systemConfig->$paramPath;");
  135.             if($value && !count($value->children())){
  136.                 $value = (string)$value;
  137.             }
  138.             self::$values[$paramPath$value;
  139.         }
  140.         else{
  141.             $value self::$values[$paramPath];
  142.         }
  143.         
  144.         return $value;
  145.     }
  146.  
  147.     /**
  148.      * Нестатический метод-обёртка над Object::_getConfigValue -
  149.      * для удобства использования внутри производных классов.
  150.      *
  151.      * @access public
  152.      * @param string $paramPath путь к параметру в дереве конфигурации
  153.      * @return string 
  154.      * @see Object::_getConfigValue()
  155.      */
  156.     public function getConfigValue($paramPath{
  157.         return self::_getConfigValue($paramPath);
  158.     }
  159. }
В создании документации нам помог: phpDocumentor