把杯子里面的水清空,从零开始学习编程。第四节 BaseYii.php

在本节中,我们将深入探讨编程之旅的第四部分,专注于PHP框架Yii的基础知识。我们将研究BaseYii.php文件,它是Yii框架的核心组件,理解它的作用对于初学者至关重要。通过解析其主要功能和用法,你将更好地掌握Yii框架的运行机制。
摘要由CSDN通过智能技术生成
<?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);
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值