本文整理汇总了PHP中Autoload::inst方法的典型用法代码示例。如果您正苦于以下问题:PHP Autoload::inst方法的具体用法?PHP Autoload::inst怎么用?PHP Autoload::inst使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Autoload
的用法示例。
在下文中一共展示了Autoload::inst方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: inst
/**
* Метод возвращает экземпляр класса-хранилища маппингов.
* Может быть переопределён в config.ini
*/
private static final function inst()
{
if (isset(self::$inst)) {
return self::$inst;
//----
}
/*
* Получим название класса
*/
$class = ConfigIni::mappingStorage();
/*
* Класс совпадает с базовым?
*/
if (__CLASS__ == $class) {
return self::$inst = new MappingStorage();
}
/*
* Нам передан класс, который отличается от SDK
*/
$classPath = Autoload::inst()->getClassPath($class);
if (!PsCheck::isNotEmptyString($classPath)) {
return PsUtil::raise('Не удалось найти класс хранилища маппингов [{}]', $class);
}
/*
* Указанный класс должен быть наследником данного
*/
if (!PsUtil::isInstanceOf($class, __CLASS__)) {
return PsUtil::raise('Указанное хранилище маппингов [{}] не является наследником класса [{}]', $class, __CLASS__);
}
return self::$inst = new $class();
}
示例2: testIsRebuilded
/**
* @covers AutoloadDir::isRebuilded
*/
public function testIsRebuilded()
{
//Запросим путь к тестовому классу, чтобы он уже наверняка был найден на момент запроса.
$this->assertNotNull(Autoload::inst()->getClassPath(ClassA::get__CLASS__()));
//Мы должны найти нагш класс без перезагрузки, так как уже нашли его ранее
$cpDir = new AutoloadDir(DirItem::inst(Autoload::DIR_TESTS));
$this->assertNotNull($cpDir->getClassPath(ClassA::get__CLASS__()));
$this->assertFalse($cpDir->isRebuilded());
}
示例3: format
public static function format($__CLASS__, $__FUNCTION__, array $arguments)
{
if (!array_key_exists($__CLASS__, self::$MESSAGES)) {
/*
* Защита от зацикливания
*/
self::$MESSAGES[$__CLASS__] = null;
/*
* Определим, где расположен класс с сообщениями
*/
$classPath = Autoload::inst()->getClassPath($__CLASS__);
if (!$classPath) {
return PsUtil::raise('Группа сообщений {} не зарегистрирована', $__CLASS__);
}
/*
* Получим DirItem сообщений для этого класса
*/
$messagesDi = DirItem::inst(dirname($classPath), $__CLASS__, PsConst::EXT_MSGS);
if (!$messagesDi->isFile()) {
return PsUtil::raise('Файл с сообщениями {} не существует', $messagesDi->getName());
}
/*
* Распарсим сообщения из файла
*/
self::$MESSAGES[$__CLASS__] = $messagesDi->getFileAsProps();
}
/*
* Проверим на зацикливание
*/
if (self::$MESSAGES[$__CLASS__] === null) {
PsUtil::raise('Зацикливание при попытке получить сообещние {}::{}', $__CLASS__, $__FUNCTION__);
}
/*
* Проверим на существование самого сообщения
*/
if (!array_key_exists($__FUNCTION__, self::$MESSAGES[$__CLASS__])) {
return PsUtil::raise('Сообщение {}::{} не существует', $__CLASS__, $__FUNCTION__);
}
/*
* Заменим макросы {} и вернём сообщение
*/
return PsStrings::replaceMapBracedKeys(self::$MESSAGES[$__CLASS__][$__FUNCTION__], $arguments);
}
示例4: inst
/** @return Autoload */
public static function inst()
{
return self::$inst ? self::$inst : (self::$inst = new Autoload());
}
示例5: inst
/**
* Метод возвращает экземпляр класса-плагина Smarty.
* Для переопределения этого класса, на уровне проектного config.ini
* должен быть задан другой класс.
*
* Это позволит использовать стандартизованный метод подключения плагинов
*/
public static final function inst()
{
if (isset(self::$inst)) {
return self::$inst;
//----
}
/*
* Получим название класса
*/
$class = ConfigIni::smartyPlugin();
/*
* Класс подключения библиотек совпадает с базовым
*/
if (__CLASS__ == $class) {
return self::$inst = new PSSmartyPlugin();
}
/*
* Нам передан класс, который отличается от SDK
*/
$classPath = Autoload::inst()->getClassPath($class);
if (!PsCheck::isNotEmptyString($classPath)) {
return PsUtil::raise('Не удалось найти класс плагинов Smarty [{}]', $class);
}
/*
* Указанный класс должен быть наследником данного
*/
if (!PsUtil::isInstanceOf($class, __CLASS__)) {
return PsUtil::raise('Указанный плагин Smarty [{}] не является наследником класса [{}]', $class, __CLASS__);
}
return self::$inst = new $class();
}
示例6: define
define('PROCESS_FUNCTION_NAME', 'executeProcess');
//Включаем логирование, перенаправляем его в консоль и устанавливаем логгеры
$LOGGING_ENABLED = true;
$LOGGING_STREAM = 2;
$LOGGERS_LIST[] = 'PROCESS';
$LOGGERS_LIST[] = 'PsLogger';
//Запускаем профилирование
$PROFILING_ENABLED = true;
//Установим глобальный массив, чтобы не получать ошибку в момент попытки стартовать сессию
$_SESSION = array();
require_once 'MainImportAdmin.php';
check_condition($CALLED_FILE, 'Global property $CALLED_FILE is not set');
check_condition(is_callable(PROCESS_FUNCTION_NAME), PROCESS_FUNCTION_NAME . ' is not callable');
//В необязательном режиме подключим папку classes нашего процесса
Autoload::inst()->registerBaseDir(array(dirname($CALLED_FILE), 'classes'), false);
function dolog($info = '')
{
call_user_func_array(array(PsLogger::inst('PROCESS'), 'info'), func_get_args());
}
$__logBoxNum = 0;
function LOGBOX_INIT($num = 0)
{
global $__logBoxNum;
$__logBoxNum = $num;
}
function LOGBOX($msg)
{
$args = func_get_args();
global $__logBoxNum;
++$__logBoxNum;
示例7: inst
/**
* Метод возвращает экземпляр класса-хранилища экземпляров фолдинов.
* Для переопределения этого класса, на уровне проектного config.ini
* должен быть задан другой класс.
*
* @return FoldedStorageInsts
*/
protected static final function inst()
{
if (isset(self::$inst)) {
return self::$inst;
//----
}
/*
* Получим название класса
*/
$class = FoldingsIni::foldingsStore();
/*
* Класс совпадает с базовым
*/
if (__CLASS__ == $class) {
return self::$inst = new FoldedStorageInsts();
}
/*
* Нам передан класс, который отличается от SDK
*/
$classPath = Autoload::inst()->getClassPath($class);
if (!PsCheck::isNotEmptyString($classPath)) {
return PsUtil::raise('Не удалось найти класс регистрации экземпляров фолдингов [{}]', $class);
}
/*
* Указанный класс должен быть наследником данного
*/
if (!PsUtil::isInstanceOf($class, __CLASS__)) {
return PsUtil::raise('Указанный класс регистрации экземпляров фолдингов [{}] не является наследником класса [{}]', $class, __CLASS__);
}
return self::$inst = new $class();
}
示例8: inst
/**
* Метод возвращает экземпляр класса, подключающего библиотеки.
* Для переопределения этого класса, на уровне проектного 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;
//---
}
示例9: dolog
dolog(pad_left('', $num, ' ') . $str);
}
dolog('');
die(1);
}
restore_exception_handler();
set_exception_handler('print_stack');
//Параметр $CALLED_FILE должен установлен запущенным процессом
check_condition($CALLED_FILE, 'Global variable $CALLED_FILE is not set');
check_condition(is_file($CALLED_FILE), "Programm file {$CALLED_FILE} is not found");
//Функция должна быть определена запущенным процессом
check_condition(is_callable(PS_PROCESS_FUNCTION_NAME), PS_PROCESS_FUNCTION_NAME . ' is not callable');
//Проверим, что программа вызвана из командной строки
check_condition(is_array($argv) && PsContext::isCmd(), "Programm {$CALLED_FILE} can be runned only from console");
//В необязательном режиме подключим папку src нашего процесса
Autoload::inst()->registerBaseDir(array(dirname($CALLED_FILE), DirManager::DIR_SRC), false);
//Определим вспомогательную функцию логирования
function dolog($info = '')
{
call_user_func_array(array(PsLogger::inst('PROCESS'), 'info'), func_get_args());
}
//Заругистрируем функцию, которая после окончания процесса запишет лог в файл
function dimpConsoleLog()
{
global $CALLED_FILE;
if ($CALLED_FILE) {
$log = file_path(dirname($CALLED_FILE), get_file_name($CALLED_FILE), 'log');
$FULL_LOG = PsLogger::controller()->getFullLog();
$FULL_LOG = mb_convert_encoding($FULL_LOG, 'UTF-8', 'cp866');
file_put_contents($log, $FULL_LOG);
}
示例10: init
/**
* Метод вызывается для инициализации окружения:
* 1. Директория ресурсов окружения будет подключена в Autoload
* 2. Файл, включающий окружение, будет выполнен
*/
public static function init()
{
if (self::$inited) {
return;
//---
}
self::$inited = true;
//---
/*
* Проверим, нужно ли подключать окружение
*/
if (self::isSkipInclude()) {
return;
//---
}
$env = self::env();
if (!$env) {
return;
//---
}
$envDir = array_get_value($env, ConfigIni::environments());
if (!$envDir) {
return PsUtil::raise('Environment [{}] not found', $env);
}
if (!is_dir($envDir)) {
return PsUtil::raise('Environment dir for [{}] not found', $env);
}
$envSrcDir = next_level_dir($envDir, DirManager::DIR_SRC);
$envIncFile = file_path($envDir, $env, PsConst::EXT_PHP);
if (!is_file($envIncFile)) {
return PsUtil::raise('Environment include file for [{}] not found', $env);
}
$LOGGER = PsLogger::inst(__CLASS__);
if ($LOGGER->isEnabled()) {
$LOGGER->info('Including \'{}\' environment for context \'{}\'', $env, PsContext::describe());
$LOGGER->info('Env dir: {}', $envDir);
$LOGGER->info('Src dir: {}', $envSrcDir);
$LOGGER->info('Inc file: {}', $envIncFile);
}
//Проинициализировано окружение
self::$included = true;
//Регистрируем директорию с классами, специфичными только для данного окружения
Autoload::inst()->registerBaseDir($envSrcDir, false);
//Выполним необходимое действие
$PROFILER = PsProfiler::inst(__CLASS__);
try {
$LOGGER->info('{');
$PROFILER->start($env);
self::initImpl($LOGGER, $envIncFile);
$secundomer = $PROFILER->stop();
$LOGGER->info('}');
$LOGGER->info('Inc file included for {} sec', $secundomer->getTime());
} catch (Exception $ex) {
$PROFILER->stop(false);
$LOGGER->info('Inc file execution error: [{}]', $ex->getMessage());
throw $ex;
//---
}
}
示例11: __construct
/**
* Конструктор класса для работы с кешем.
* Кеширование идёт в два этапа:
* 1. Кеширование на уровне класса для максимально быстрого доступа
* 2. Кеширование в долгосрочном хранилище, которое реализуется отдельным классом - "движком" кеширования
*
* Движок кеширования должен быть задан на уровне config.ini
*
* @return PSCache
*/
protected function __construct()
{
$this->LOGGER = PsLogger::inst(__CLASS__);
/*
* Получим название класса "движка" кеширования
*/
$class = ConfigIni::cacheEngine();
/*
* Проверим наличие класса
*/
$classPath = Autoload::inst()->getClassPath($class);
if (!PsCheck::isNotEmptyString($classPath)) {
return PsUtil::raise('Не удалось найти класс для кеширования [{}]', $class);
}
/*
* Правильный ли класс указан?
*/
if (!PsUtil::isInstanceOf($class, 'PSCacheEngine')) {
return PsUtil::raise('Указанный класс кеширования [{}] не является наследником класса [{}]', $class, 'PSCacheEngine');
}
$this->LOGGER->info('Используем движок кеширования: {}', $class);
$this->CACHE_ENGINE = new $class();
}
示例12: ps_admin_on
function ps_admin_on($force = false)
{
if ($force || AuthManager::isAuthorizedAsAdmin()) {
Autoload::inst()->registerAdminBaseDir();
}
}
示例13:
<?php
/*
* Ресурсы для тестов. Подключаем также и ресурсы админа.
*/
include_once 'MainImportAdmin.php';
Autoload::inst()->registerTestsBaseDir();
示例14: __construct
public function __construct($class)
{
$this->rc = PsUtil::newReflectionClass($class);
$this->di = DirItem::inst(Autoload::inst()->getClassPath($this->rc->name));
}