Example #1
0
 /** @return AbstractForm */
 public static function getInstance()
 {
     return parent::inst();
 }
Example #2
0
 /** @return BasePlugin */
 public static final function inst()
 {
     return parent::inst();
 }
Example #3
0
 /**
  * Создание экземпляра класса для сущности фолдинга.
  * Если по каким-либо причинам экземпляр не может быть создан - выбрасываем ошибку.
  * 
  * @return FoldedClass
  */
 public final function getEntityClassInst($ident, $cache = true)
 {
     /* @var $CACHE SimpleDataCache */
     $CACHE = $cache ? SimpleDataCache::inst($this->unique('CLASSES-CACHE')) : null;
     //---
     if ($CACHE && $CACHE->has($ident)) {
         return $CACHE->get($ident);
     }
     $classPath = $this->getClassPath($ident);
     //Подключим класс, не будем заставлять трудиться класслоадер
     require_once $classPath;
     //Построим название класса на основе идентификатора сущности
     $className = $this->ident2className($ident);
     if (!PsUtil::isInstanceOf($className, FoldedClass::getCalledClass())) {
         return PsUtil::raise('Класс для сущности {} не является наследником {}', $this->getTextDescr($ident), FoldedClass::getCalledClass());
     }
     //Получим FoldedEntity, так как её потом нужно будет передать в конструктор
     $foldedEntity = $this->getFoldedEntity($ident);
     //Создаём экземпляр
     $inst = new $className($foldedEntity);
     //Отлогируем
     $this->LOGGER->info('Instance of {} created.', $className);
     FoldedResourcesManager::onEntityAction(FoldedResourcesManager::ACTION_ENTITY_INST_CREATED, $this, $ident);
     return $CACHE ? $CACHE->set($ident, $inst) : $CACHE;
 }