<?php
// 使用Yii命名空间
namespace yii;
use yii\base\InvalidArgumentException; // 异常类
use yii\base\InvalidConfigException; // 异常类
use yii\base\UnknownClassException; // 异常类
use yii\di\Container; // 容器类
use yii\log\Logger; // 日志
// 获取应用程序启动时间戳。
defined('YII_BEGIN_TIME') or define('YII_BEGIN_TIME', microtime(true));
// 定义框架安装目录。
defined('YII2_PATH') or define('YII2_PATH', __DIR__);
// 定义应用程序是否应该处于调试模式。默认值为false
defined('YII_DEBUG') or define('YII_DEBUG', false);
//定义了应用程序在哪个环境中运行。默认为“prod”,表示生产环境。
//可以在引导脚本中定义这个常量。值可以是“prod”(生产)、“dev”(开发)、“test”、“staging”等等。
/** 第一节中的index.php 中的定义就这个 */
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');
// 定义是否应启用错误处理。默认值为true。
defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER', true);
/**
* BaseYii是Yii框架的核心助手类。
*
* 不要直接使用BaseYii。相反,可以编写Yii.php,修改BaseYii的方法
* 定制BaseYii的方法
*/
class BaseYii
{
/**
* @Yii自动加载机制使用的类数组的映射
*
* 例如 'yii\base\Action' => YII2_PATH . '/base/Action.php',
* 如果你想知道自动加载是怎样实现的去看autoload方法
*/
// 定义自动加载类数组
public static $classMap = [];
// 这个静态变量为 \yii\console\Application|\yii\web\Application 的实例
public static $app;
/**
* 需要注册类路径的别名
*
* 相关的方法 getAlias
* 相关的方法 setAlias()
*/
public static $aliases = ['@yii' => __DIR__];
/**
* 创建类对象的依赖注入的(DI)容器
* 您可以使用 Container::set() 来设置类和的所需依赖项及其初始属性值。
* 相关的方法 createObject()
* 相关的类 Container
*/
public static $container;
// 返回一个表示Yii框架当前版本的字符串。
public static function getVersion()
{
return '2.0.35';
}
/**
* 将路径别名转换为实际路径
*
* 解释:
*
* 1. 如果给定的别名没有以“@”开头,则返回它而不做任何更改;
* 2. 查找与给定别名的开始部分匹配的最长注册别名。如果存在,将给定别名的匹配部分替换为相应的注册路径。
* 3. 抛出异常或返回false,这取决于 $throwException 参数。
*
* 例如,默认情况下'@yii'被注册为Yii框架目录的别名,例如'/path/to/ Yii '。别名“@yii/web”将被翻译成“/path/to/yii/web”
*
* 如果你注册的两个别名 '@foo' 和 '@foo/bar' 。然后去使用 '@foo/bar/config' 相对应的路径被替换 '@foo/bar'
* (而不是 “@foo”)。这是因为最长的路径的别名优先被使用。
*
* @foo => /path/foo
* @foo/bar => /path/foo/b/
*
* @foo/bar/config => /path/foo/b/config' 不是 /path/foo/bar/config
*
* 如果说 使用 @foo/barbar/config ,这样的话 @foo 就会被替换
* 而不是 @foo/bar ,因为'/'用作边界字符。
*
* @foo/barbar/config => /path/foo/barbar/config 不是 /path/foo/b/bar/config
*
* 注意,此方法不检查返回的路径是否存在。
*
* 有关更多信息,请参阅[关于别名的指南文章](指南:概念别名)。
*
* @param string $alias 要翻译的别名。
* @param bool $throwException 如果给定的别名无效,是否抛出异常。
* 如果这是假的,并且给出了一个无效的别名,那么这个方法将返回false。
* @return string|bool 解析后的别名路径,如果别名没有被注册,返回false
* @throws InvalidArgumentException 如果别名无效,抛出异常
* @see setAlias() 相关方法setAlias()
*/
public static function getAlias($alias, $throwException = true)
{
// strncmp() 比较两个字符串 第三个参数为比较的字符数
if (strncmp($alias, '@', 1)) {
// 不是一个别名 直接返回路径
return $alias;
}
// 获取第一个 ‘/’
$pos = strpos($alias, '/');
// 截取路径 获取 别名
$root = $pos === false ? $alias : substr($alias, 0, $pos);
把杯子里面的水清空,从零开始学习编程。第四节 BaseYii.php
最新推荐文章于 2021-11-08 15:45:20 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)