|
- <?php
-
-
- namespace yii;
-
- use yii\base\InvalidConfigException;
- use yii\base\InvalidParamException;
- use yii\base\UnknownClassException;
- use yii\log\Logger;
- use yii\di\Container;
-
-
- defined('YII_BEGIN_TIME') or define('YII_BEGIN_TIME', microtime(true));
-
- defined('YII2_PATH') or define('YII2_PATH', __DIR__);
-
- defined('YII_DEBUG') or define('YII_DEBUG', false);
-
- defined('YII_ENV') or define('YII_ENV', 'prod');
-
- defined('YII_ENV_PROD') or define('YII_ENV_PROD', YII_ENV === 'prod');
-
- defined('YII_ENV_DEV') or define('YII_ENV_DEV', YII_ENV === 'dev');
-
- defined('YII_ENV_TEST') or define('YII_ENV_TEST', YII_ENV === 'test');
-
-
- defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER', true);
-
-
- class BaseYii
- {
-
-
- public static $classMap = [];
-
-
- public static $app;
-
-
- public static $aliases = ['@yii' => __DIR__];
-
-
- public static $container;
-
-
-
-
- public static function getVersion()
- {
- return '2.0.10';
- }
-
-
-
- public static function getAlias($alias, $throwException = true)
- {
- if (strncmp($alias, '@', 1)) {
-
- return $alias;
- }
-
- $pos = strpos($alias, '/');
- $root = $pos === false ? $alias : substr($alias, 0, $pos);
-
- if (isset(static::$aliases[$root])) {
- if (is_string(static::$aliases[$root])) {
- return $pos === false ? static::$aliases[$root] : static::$aliases[$root] . substr($alias, $pos);
- } else {
- foreach (static::$aliases[$root] as $name => $path) {
- if (strpos($alias . '/', $name . '/') === 0) {
- return $path . substr($alias, strlen($name));
- }
- }
- }
- }
-
- if ($throwException) {
- throw new InvalidParamException("Invalid path alias: $alias");
- } else {
- return false;
- }
- }
-
-
-
- public static function getRootAlias($alias)
- {
- $pos = strpos($alias, '/');
- $root = $pos === false ? $alias : substr($alias, 0, $pos);
-
- if (isset(static::$aliases[$root])) {
- if (is_string(static::$aliases[$root])) {
- return $root;
- } else {
- foreach (static::$aliases[$root] as $name => $path) {
- if (strpos($alias . '/', $name . '/') === 0) {
- return $name;
- }
- }
- }
- }
-
- return false;
- }
-
-
-
- public static function setAlias($alias, $path)
- {
- if (strncmp($alias, '@', 1)) {
- $alias = '@' . $alias;
- }
- $pos = strpos($alias, '/');
- $root = $pos === false ? $alias : substr($alias, 0, $pos);
- if ($path !== null) {
- $path = strncmp($path, '@', 1) ? rtrim($path, '\\/') : static::getAlias($path);
- if (!isset(static::$aliases[$root])) {
- if ($pos === false) {
- static::$aliases[$root] = $path;
- } else {
- static::$aliases[$root] = [$alias => $path];
- }
- } elseif (is_string(static::$aliases[$root])) {
- if ($pos === false) {
- static::$aliases[$root] = $path;
- } else {
- static::$aliases[$root] = [
- $alias => $path,
- $root => static::$aliases[$root],
- ];
- }
- } else {
- static::$aliases[$root][$alias] = $path;
- krsort(static::$aliases[$root]);
- }
- } elseif (isset(static::$aliases[$root])) {
- if (is_array(static::$aliases[$root])) {
- unset(static::$aliases[$root][$alias]);
- } elseif ($pos === false) {
- unset(static::$aliases[$root]);
- }
- }
- }
-
-
-
- public static function autoload($className)
- {
- if (isset(static::$classMap[$className])) {
- $classFile = static::$classMap[$className];
- if ($classFile[0] === '@') {
- $classFile = static::getAlias($classFile);
- }
- } elseif (strpos($className, '\\') !== false) {
- $classFile = static::getAlias('@' . str_replace('\\', '/', $className) . '.php', false);
- if ($classFile === false || !is_file($classFile)) {
- return;
- }
- } else {
- return;
- }
-
- include($classFile);
-
- if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) {
- throw new UnknownClassException("Unable to find '$className' in file: $classFile. Namespace missing?");
- }
- }
-
-
-
- public static function createObject($type, array $params = [])
- {
- if (is_string($type)) {
- return static::$container->get($type, $params);
- } elseif (is_array($type) && isset($type['class'])) {
- $class = $type['class'];
- unset($type['class']);
- return static::$container->get($class, $params, $type);
- } elseif (is_callable($type, true)) {
- return static::$container->invoke($type, $params);
- } elseif (is_array($type)) {
- throw new InvalidConfigException('Object configuration must be an array containing a "class" element.');
- } else {
- throw new InvalidConfigException('Unsupported configuration type: ' . gettype($type));
- }
- }
-
- private static $_logger;
-
-
-
- public static function getLogger()
- {
- if (self::$_logger !== null) {
- return self::$_logger;
- } else {
- return self::$_logger = static::createObject('yii\log\Logger');
- }
- }
-
-
-
- public static function setLogger($logger)
- {
- self::$_logger = $logger;
- }
-
-
-
- public static function trace($message, $category = 'application')
- {
- if (YII_DEBUG) {
- static::getLogger()->log($message, Logger::LEVEL_TRACE, $category);
- }
- }
-
-
-
- public static function error($message, $category = 'application')
- {
- static::getLogger()->log($message, Logger::LEVEL_ERROR, $category);
- }
-
-
-
- public static function warning($message, $category = 'application')
- {
- static::getLogger()->log($message, Logger::LEVEL_WARNING, $category);
- }
-
-
-
- public static function info($message, $category = 'application')
- {
- static::getLogger()->log($message, Logger::LEVEL_INFO, $category);
- }
-
-
-
- public static function beginProfile($token, $category = 'application')
- {
- static::getLogger()->log($token, Logger::LEVEL_PROFILE_BEGIN, $category);
- }
-
-
-
- public static function endProfile($token, $category = 'application')
- {
- static::getLogger()->log($token, Logger::LEVEL_PROFILE_END, $category);
- }
-
-
-
- public static function powered()
- {
- return \Yii::t('yii', 'Powered by {yii}', [
- 'yii' => '<a href="http://www.yiiframework.com/" rel="external">' . \Yii::t('yii',
- 'Yii Framework') . '</a>'
- ]);
- }
-
-
-
- public static function t($category, $message, $params = [], $language = null)
- {
- if (static::$app !== null) {
- return static::$app->getI18n()->translate($category, $message, $params, $language ?: static::$app->language);
- } else {
- $p = [];
- foreach ((array) $params as $name => $value) {
- $p['{' . $name . '}'] = $value;
- }
-
- return ($p === []) ? $message : strtr($message, $p);
- }
- }
-
-
-
- public static function configure($object, $properties)
- {
- foreach ($properties as $name => $value) {
- $object->$name = $value;
- }
-
- return $object;
- }
-
-
-
- public static function getObjectVars($object)
- {
- return get_object_vars($object);
- }
- }
|