private function __construct(array $params) { PsLibs::inst()->SpriteGenerator(); $this->CssSpriteGen = new CssSpriteGen($params); $this->LOGGER = PsLogger::inst(__CLASS__); $this->PROFILER = PsProfiler::inst(__CLASS__); }
public function __construct() { /** * Подключаем cache lite */ PsLibs::inst()->CacheLite(); /* * Конфигурируем */ $liteOptions = array('readControl' => true, 'writeControl' => true, 'readControlType' => 'md5', 'automaticSerialization' => true, 'cacheDir' => DirManager::autogen('cache-lite')->absDirPath(), 'lifeTime' => ConfigIni::cacheFileLifetime() * 60, 'caching' => true); if (PsLogger::isEnabled()) { PsLogger::inst(__CLASS__)->info('Lite options: {}', print_r($liteOptions, true)); } $this->IMPL = new Cache_Lite($liteOptions); }
/** * Метод проверяет значение на наличие в ней нецензурной лексики * * * * @param string $string - строка, которая должна быть проверена * @return bool - если есть нецензурные элементы, вернёт строку, в которой эта часть выделена */ public static function parse($string) { /* * Пустая строка или не строка? Возвращаем как есть. */ if (!PsCheck::isNotEmptyString($string)) { return false; //--- } /* * Подключим библиотеку, если нужно */ PsLibs::inst()->Censure(); /* * Обрабатываем */ return Text_Censure::parse($string, '2', "…", false); }
protected function __construct() { PsLibs::inst()->Smarty(); /* * Начиная с версии 5.4 в функции htmlentities параметр encoding был изменён на UTF-8, * до этого момента после применения данного метода к тексту шаблона мы будем получать кракозябру. */ SmartyCompilerException::$escape = is_phpver_is_or_greater(5, 4); //Получим и сконфигурируем экземпляр Smarty $this->smarty = new Smarty(); $this->smarty->compile_check = true; $this->smarty->force_compile = false; //$this->smarty->caching = TRUE; /* * УПРАВЛЯЮЩИЕ ДИРЕКТОРИИ */ //Директории с шаблонами .tpl : PSSmarty::template('common/citata.tpl'); $this->smarty->setTemplateDir(ConfigIni::smartyTemplates()); //Директория, в которую складываются скомпилированные шаблоны $this->smarty->setCompileDir(DirManager::autogen('/smarty/templates_c/')->absDirPath()); //Директория, в которую складываются кеши $this->smarty->setCacheDir(DirManager::autogen('/smarty/cache/')->absDirPath()); //Директория с конфигами $this->smarty->setConfigDir(PATH_BASE_DIR . PS_DIR_INCLUDES . '/smarty/configs/'); //Директории с плагинами - блочными функциями, функциями, модификатор $this->smarty->addPluginsDir(ConfigIni::smartyPlugins()); /* * Импортируем константы некоторых классов, чтобы на них можно было ссылаться через * {$smarty.const.CONST_NAME} */ //PsConstJs::defineAllConsts(); /* * ПОДКЛЮЧИМ ФИЛЬТРЫ */ PSSmartyFilter::inst()->bind($this->smarty); /* * ПОДКЛЮЧАЕМ ПЛАГИНЫ */ PSSmartyPlugin::inst()->bind($this->smarty); }
/** * Анимация */ public function getAnimation() { if (isset($this->animation)) { return $this->animation; } check_condition($this->IMAGES, 'No images for gif'); PsLibs::inst()->GifEncoder(); $frames = array(); $framed = array(); foreach ($this->IMAGES as $path => $delay) { ob_start(); SimpleImage::inst()->load($path)->output(IMAGETYPE_GIF)->close(); $frames[] = ob_get_contents(); $framed[] = $delay; // Delay in the animation. ob_end_clean(); } // Generate the animated gif and output to screen. $gif = new GIFEncoder($frames, $framed, 0, 2, 0, 0, 0, 'bin'); $this->animation = $gif->GetAnimation(); return $this->animation; }
/** * Метод возвращает экземпляр класса, подключающего библиотеки. * Для переопределения этого класса, на уровне проектного config.ini * должен быть задан другой класс, отвечающий за подключение библиотек. * * Это позволит: * 1. Использовать стандартизованный метод подключения внешних библиотек * 2. Переопределить подключение библиотек из SDK */ public static final function inst() { if (isset(self::$inst)) { return self::$inst; //---- } /* * Получим название класса, отвечающего за подключение библиотек */ $class = ConfigIni::libsIncluder(); /* * Подготовим директории */ $SDK_LIB_DIR = DirManager::inst(PS_DIR_INCLUDES, DirManager::DIR_LIB)->absDirPath(); $PROJ_LIB_DIR = DirManager::inst(PS_DIR_ADDON, DirManager::DIR_LIB)->absDirPath(); /* * Класс подключения библиотек совпадает с базовым */ if (__CLASS__ == $class) { self::$inst = new PsLibs(); self::$inst->SDK_LIB_DIR = $SDK_LIB_DIR; self::$inst->LOGGER = PsLogger::inst($class); self::$inst->LOGGER->info('Libs includer SDK: [{}]', __FILE__); self::$inst->LOGGER->info('Libs directory SDK: [{}]', $SDK_LIB_DIR); return self::$inst; //--- } /* * Нам передан класс, который отличается от SDK */ $classPath = Autoload::inst()->getClassPath($class); if (!PsCheck::isNotEmptyString($classPath)) { return PsUtil::raise('Не удалось найти класс загрузчика библиотек [{}]', $class); } /* * Указанный класс должен быть наследником данного */ if (!PsUtil::isInstanceOf($class, __CLASS__)) { return PsUtil::raise('Указанный загрузчик библиотек [{}] не является наследником класса [{}]', $class, __CLASS__); } self::$inst = new $class(); self::$inst->SDK_LIB_DIR = $SDK_LIB_DIR; self::$inst->PROJ_LIB_DIR = $PROJ_LIB_DIR; self::$inst->LOGGER = PsLogger::inst($class); self::$inst->LOGGER->info('Libs includer CUSTOM: [{}]', $classPath); self::$inst->LOGGER->info('Libs directory SDK: [{}]', $SDK_LIB_DIR); self::$inst->LOGGER->info('Libs directory CUSTOM: [{}]', $PROJ_LIB_DIR); return self::$inst; //--- }
{ 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')); die; print_r(PSCache::inst()->saveToCache($a, $key, $group));
protected function __construct() { PsLibs::inst()->MathEvaluator(); $this->EVALUATOR = new EvalMath(); $this->EVALUATOR->suppress_errors = false; }
<?php PsLibs::inst()->PhpMailer(); /** * Базовый класс для отправки почты * * @author azazello */ final class PsMailSender extends PHPMailer { /** @var PsMailSender */ private static $inst; /** * В конструкторе выполним все необходимые подготовки. * Доступ public как в PHPMailer. */ public function __construct() { check_condition(!self::$inst, 'Экземпляр ' . __CLASS__ . ' должен быть единственным'); $this->exceptions = true; $this->CharSet = 'UTF-8'; $this->SetLanguage('ru'); $this->IsSMTP(); $this->SMTPKeepAlive = true; //Need SmtpClose in __destruct() $this->SMTPAuth = true; // Enable SMTP authentication $this->Host = ConfigIni::smtpHost(); // Specify main and backup server $this->Sender = ConfigIni::smtpUser(); $this->Username = ConfigIni::smtpUser();
/** * Метод получения коннекта к БД * * @return ADOConnection */ protected final function getConnection() { if ($this->CONNECTION != null) { return $this->CONNECTION; //--- } if (!$this->isConfigured()) { PsUtil::raise('Cannot get DB connection, {} is not configured.', get_called_class()); } $this->LOGGER->info(); $this->LOGGER->info('? Connection for [{}] is requested', $this->CONNECTION_PARAMS); $URL = $this->CONNECTION_PARAMS->url(); //Посмотрим, есть ли у нас нужный коннект if (array_key_exists($URL, $this->CONNECTIONS)) { $this->LOGGER->info('< Fast returned from cache'); return $this->CONNECTION = $this->CONNECTIONS[$URL]; } //Отлогируем $this->LOGGER->info('+ Establishing connection {}', $this->CONNECTION_PARAMS); //Подключаем adodb PsLibs::inst()->AdoDb(); //Подключаемся $this->CONNECTION = ADONewConnection($URL); if (!is_object($this->CONNECTION)) { PsUtil::raise("Unable to connect to [{}]", $this->CONNECTION_PARAMS); } //Зададим некоторые настройки $this->CONNECTION->debug = ADODB_DEBUG; $this->CONNECTION->SetFetchMode(ADODB_FETCH_ASSOC); $this->CONNECTION->query("SET NAMES 'utf8'"); $this->CONNECTION->query("SET CHARACTER SET 'utf8'"); //Положим соединение в пул if (array_key_exists($URL, $this->CONNECTIONS)) { raise_error('Double trying to register db connection'); } $this->LOGGER->info('< Established connection returned'); return $this->CONNECTIONS[$URL] = $this->CONNECTION; }