コード例 #1
0
 /**
  * Предварительная обработка страницы - самое время выполнить сабмит формы, редирект и остальные подобные вещи
  */
 private final function preProcess(array $buildParams = array())
 {
     ExceptionHandler::registerPretty();
     //Проверим и сменим состояние
     $this->changeState(self::STATE_NOT_INITED, self::STATE_STARTED);
     $BUILDER_CTXT = PageBuilderContext::getInstance();
     //Стартуем контекст
     $BUILDER_CTXT->setContext(__CLASS__);
     $this->PROFILER->start(__FUNCTION__);
     try {
         //Вызываем предварительную обработку страницы
         return $this->preProcessImpl($BUILDER_CTXT, RequestArrayAdapter::inst(), ArrayAdapter::inst($buildParams));
     } catch (Exception $ex) {
         $this->PROFILER->stop(false);
         throw $ex;
     }
 }
コード例 #2
0
ファイル: index.php プロジェクト: ilivanoff/ps-sdk-dev
    public static $a = array();
    public static function test()
    {
        self::$a[] = '1';
    }
    final function __construct($a)
    {
    }
}
class B extends A
{
}
A::test();
A::test();
B::test();
ExceptionHandler::registerPretty();
//print_r(B::$a);
PsLibs::inst();
PsConnectionPool::configure(PsConnectionParams::sdkTest());
ps_admin_on(true);
$a = array('a' => array('x' => 1, 'y' => 2));
$key = 'M';
$group = 'default';
$group2 = 'default2';
PSCache::inst()->saveToCache($a, $key, $group, 'xxx');
PSCache::inst()->saveToCache(array('a' => 1), '$key', '$group', 'xxx1');
die;
echo TestUtils::testProductivity(function () {
    PSCache::inst()->getFromCache('$key', '$group', null, 'xxx1');
});
print_r(PSCache::inst()->getFromCache($key, $group, array('a'), 'xxx1'));
コード例 #3
0
ファイル: PageBuilder.php プロジェクト: ilivanoff/www
 public final function buildPage(array $buildParams = array())
 {
     header('Content-Type: text/html; charset=utf-8');
     ExceptionHandler::registerPretty();
     //Запросим адаптер, чтобы сбросить параметры в сессии
     UnloadArrayAdapter::inst();
     // Подготовим необходимые классы
     $CTXT = PageContext::inst();
     $PAGE = $CTXT->getPage();
     $BUILDER = $this->getPageBuilder($CTXT->getPageType());
     $PROFILER = $BUILDER->getProfiler();
     $RESOURCES = null;
     $TITLE = null;
     $CONTENT = null;
     if ($PROFILER) {
         // Начинаем профилирование
         $PROFILER->start($CTXT->getRequestUrl());
     }
     try {
         //Подготовим объекты, которые будем передавать построителю страницы
         $RQ_PARAMS = RequestArrayAdapter::inst();
         $BUILD_PARAMS = ArrayAdapter::inst($buildParams);
         $BUILDER_CTXT = PageBuilderContext::getInstance();
         //Стартуем контекст
         $BUILDER_CTXT->setContextWithFoldedEntity($BUILDER->getFoldedEntity());
         //Вызываем предварительную обработку страницы
         $BUILDER->preProcessPage($CTXT, $RQ_PARAMS, $BUILD_PARAMS);
         // Оповещаем слушателей
         /* @var $listener PagePreloadListener */
         foreach (Handlers::getInstance()->getPagePreloadListeners() as $listener) {
             $listener->onPagePreload($PAGE);
         }
         //Билдер строит страницу, наполняя контекст. Нам от него нужны будут только данные из контекста
         $PARAMS = $BUILDER->buildPage($CTXT, $BUILDER_CTXT, $RQ_PARAMS, $BUILD_PARAMS);
         //Остановим контекст
         $BUILDER_CTXT->dropContext();
         //Загрузим параметры
         $TITLE = $PARAMS->getTitle();
         $CONTENT = $PARAMS->getContent();
         // Подключаем все необходимые ресурсы
         $RESOURCES = $this->buildResources($PARAMS, $CTXT);
         //Проведём финализацию страницы, чтобы различные менеджеры могли добавить к ней свои данные
         $CONTENT = PageFinaliserFoldings::finalize($this->LOGGER, $CONTENT);
     } catch (Exception $ex) {
         $TITLE = trim($TITLE) . ' (произошла ошибка)';
         $CONTENT = ExceptionHandler::getHtml($ex);
     }
     //Непосредственное построение страницы.
     $PAGE_PARAMS['RESOURCES'] = $RESOURCES;
     $PAGE_PARAMS['TITLE'] = $TITLE;
     $PAGE_PARAMS['CONTENT'] = $CONTENT;
     //ПОДСТАВЛЯЕМ ВСЕ ПАРАМЕТРЫ СТРАНИЦЫ В БАЗОВЫЙ ШАБЛОН
     $PAGE_CONTENT = PSSmarty::template('page/page_pattern.tpl', $PAGE_PARAMS)->fetch();
     $this->LOGGER->infoBox('HTML PAGE', $PAGE_CONTENT);
     //ФИНАЛИЗАЦИЯ СТРАНИЦЫ - ВЫЧИСЛИМ РЕСУРСЫ, КОТОРЫЕ НУЖНО ОТКЛЮЧИТЬ
     $PAGE_CONTENT = PageFinaliserRegExp::finalize($this->LOGGER, $PAGE_CONTENT);
     //НОРМАЛИЗАЦИЯ СТРАНИЦЫ - УДАЛИМ ДВОЙНЫЕ ПРОБЕЛЫ И ПЕРЕНОСЫ
     if (PsDefines::isNormalizePage()) {
         $PAGE_CONTENT = PageNormalizer::finalize($this->LOGGER, $PAGE_CONTENT);
     }
     //ВСТАВИМ ASIS ПАРАМЕТРЫ, ТАК КАК БОЛЕЕ SMARTY ФИЛЬТРЫ ВЫЗЫВАТЬСЯ НЕ БУДУТ
     $PAGE_CONTENT = $this->replaceAsIsValues($PAGE_CONTENT);
     $this->LOGGER->infoBox('PAGE WITH ASIS REPLACED', $PAGE_CONTENT);
     //BOOOM :)
     echo $PAGE_CONTENT;
     if ($PROFILER) {
         // Заканчиваем профилирование
         $PROFILER->stop();
         PageOpenWatcher::updateUserPageWatch($CTXT->getRequestUrl());
     }
 }