Beispiel #1
0
 /**
  * Основной метод, регистрирующий класс для закрытия
  * 
  * @param Destructable $inst - Экземпляр класса, которй будет гарантированно закрыт в свою очередь
  * @param int $order - порядок закрытия
  */
 public static function registerDestructable(Destructable $inst, $order)
 {
     /*
      * Класс получаем через get_called_class(), так как PsShotdownSdk может быть переопределён проектным
      */
     $class = get_called_class();
     /*
      * Проверяем, что нам передан валидный order
      */
     $order = PsUtil::assertClassHasConstVithValue($class, null, PsCheck::int($order));
     /*
      * Регистрируем shutdown
      */
     if (is_null(self::$DESTRUCTS)) {
         PsUtil::assertClassHasDifferentConstValues($class);
         self::$DESTRUCTS = array();
         register_shutdown_function(array(__CLASS__, '_doShotdown'));
     }
     /*
      * Проверим, что нет попытки повторной регистрации с тем-же order
      */
     if (array_key_exists($order, self::$DESTRUCTS)) {
         raise_error("Попытка повторно зарегистрировать Destructable с порядком [{$order}] для класса " . get_class($inst));
     }
     /*
      * Регистрируем класс на закрытие
      */
     self::$DESTRUCTS[$order] = $inst;
 }
Beispiel #2
0
 protected final function __construct()
 {
     $this->CLASS = get_called_class();
     PsUtil::assertClassHasDifferentConstValues($this->CLASS, 'CODE_');
     PsUtil::assertClassHasDifferentConstValues($this->CLASS, 'ACTION_');
     $this->ACTIONS = PsUtil::getClassConsts($this->CLASS, 'ACTION_');
     $this->LOGGER = PsLogger::inst($this->CLASS);
     $this->PROCESS_CODE = $this->getProcessCode();
     check_condition(in_array($this->PROCESS_CODE, PsUtil::getClassConsts(__CLASS__, 'CODE_')), "Класс [{$this->CLASS}] использует незарегистрированный код аудита [{$this->PROCESS_CODE}].");
     $this->SESSION = SESSION_AUDIT_ACTION . '-' . $this->CLASS . '-' . $this->PROCESS_CODE;
 }
Beispiel #3
0
 protected function __construct()
 {
     //Убедимся в том, что константы класса не повторяются. Вообще более уместно использовать здесь enum.
     PsUtil::assertClassHasDifferentConstValues(__CLASS__, 'CODE_STATUS_');
     parent::__construct();
 }
Beispiel #4
0
 protected function __construct()
 {
     PsUtil::assertClassHasDifferentConstValues(__CLASS__, 'TYPE_');
     $this->LOGGER = PsLogger::inst(__CLASS__);
     $this->PROFILER = PsProfiler::inst(__CLASS__);
     $this->CACHE = new SimpleDataCache();
 }
Beispiel #5
0
 protected final function assertClassHasDifferentConstValues($class, $prefix = '')
 {
     PsUtil::assertClassHasDifferentConstValues($class, $prefix);
 }