0 关注者

类 Yii

继承Yii » yii\BaseYii
可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/Yii.php

Yii 是一个帮助类,提供常见的框架功能。

它继承自 yii\BaseYii,该类提供了实际的实现。通过编写你自己的 Yii 类,你可以定制 yii\BaseYii 的一些功能。

公共属性

隐藏继承属性

属性 类型 描述 定义于
$aliases array 注册的路径别名 yii\BaseYii
$app yii\console\Application|yii\web\Application 应用程序实例 yii\BaseYii
$classMap array Yii 自动加载机制使用的类映射。 yii\BaseYii
$container yii\di\Container createObject() 使用的依赖注入 (DI) 容器。 yii\BaseYii

公共方法

隐藏继承方法

方法 描述 定义于
autoload() 类自动加载器。 yii\BaseYii
beginProfile() 标记代码块开始进行性能分析。 yii\BaseYii
configure() 使用初始属性值配置对象。 yii\BaseYii
createObject() 使用给定的配置创建新对象。 yii\BaseYii
debug() 记录调试消息。 yii\BaseYii
endProfile() 标记代码块结束进行性能分析。 yii\BaseYii
error() 记录错误消息。 yii\BaseYii
getAlias() 将路径别名转换为实际路径。 yii\BaseYii
getLogger() yii\BaseYii
getObjectVars() 返回对象的公共成员变量。 yii\BaseYii
getRootAlias() 返回给定别名的根别名部分。 yii\BaseYii
getVersion() 返回表示 Yii 框架当前版本的字符串。 yii\BaseYii
info() 记录信息消息。 yii\BaseYii
powered() 返回一个 HTML 超链接,可以在你的网页上显示 "Powered by Yii Framework" 信息。 yii\BaseYii
setAlias() 注册路径别名。 yii\BaseYii
setLogger() 设置日志记录器对象。 yii\BaseYii
t() 将消息翻译成指定的语言。 yii\BaseYii
trace() debug() 的别名。 yii\BaseYii
warning() 记录警告消息。 yii\BaseYii

方法详情

隐藏继承方法

autoload() 公共静态方法

定义于: yii\BaseYii::autoload()

类自动加载器。

当 PHP 遇到一个未知类时,此方法会被自动调用。该方法将尝试按照以下步骤包含类文件:

  1. $classMap 中搜索;
  2. 如果类是命名空间的 (例如 yii\base\Component),它将尝试包含与对应路径别名关联的文件 (例如 @yii/base/Component.php);

此自动加载器允许加载遵循 PSR-4 标准 并且其顶级命名空间或子命名空间被定义为路径别名的类。

示例:当别名 @yii@yii/bootstrap 被定义时,yii\bootstrap 命名空间中的类将使用 @yii/bootstrap 别名进行加载,该别名指向安装了 bootstrap 扩展文件所在的目录,而其他 yii 命名空间中的所有类将从 yii 框架目录中加载。

还可以查看 关于自动加载的指南部分

public static void autoload ( $className )
$className string

没有前导反斜杠 "\" 的完全限定类名

抛出 yii\base\UnknownClassException

如果类在类文件中不存在

                public static function autoload($className)
{
    if (isset(static::$classMap[$className])) {
        $classFile = static::$classMap[$className];
        if (strncmp($classFile, '@', 1) === 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?");
    }
}

            
beginProfile() 公共静态方法

定义于: yii\BaseYii::beginProfile()

标记代码块开始进行性能分析。

这必须与对 endProfile() 的调用相匹配,并且调用时要使用相同的类别名称。begin 和 end 调用也必须正确嵌套。例如:

\Yii::beginProfile('block1');
// some code to be profiled
    \Yii::beginProfile('block2');
    // some other code to be profiled
    \Yii::endProfile('block2');
\Yii::endProfile('block1');

另请参阅 endProfile()

public static void beginProfile ( $token, $category 'application' )
$token string

代码块的标记

$category string

此日志消息的类别

                public static function beginProfile($token, $category = 'application')
{
    static::getLogger()->log($token, Logger::LEVEL_PROFILE_BEGIN, $category);
}

            
configure() 公共静态方法

定义于: yii\BaseYii::configure()

使用初始属性值配置对象。

public static object configure ( $object, $properties )
$object object

要配置的对象

$properties array

以名称-值对形式给出的属性初始值。

返回值 object

对象本身

                public static function configure($object, $properties)
{
    foreach ($properties as $name => $value) {
        $object->$name = $value;
    }
    return $object;
}

            
createObject() 公共静态方法

定义于: yii\BaseYii::createObject()

使用给定的配置创建新对象。

你可以将此方法视为 new 运算符的增强版。该方法支持基于类名、配置数组或匿名函数创建对象。

以下是一些使用示例

// create an object using a class name
$object = Yii::createObject('yii\db\Connection');

// create an object using a configuration array
$object = Yii::createObject([
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
]);

// create an object with two constructor parameters
$object = \Yii::createObject('MyClass', [$param1, $param2]);

使用 依赖注入容器,此方法还可以识别依赖对象、实例化它们并将它们注入到新创建的对象中。

另请参阅 yii\di\Container

public static object createObject ( $type, array $params = [] )
$type string|array|callable

对象类型。这可以通过以下几种形式之一指定

  • 字符串:表示要创建的对象的类名
  • 配置数组:该数组必须包含一个 class 元素,该元素被视为对象类,其余的键值对将用于初始化相应的对象属性
  • PHP 可调用:匿名函数或表示类方法的数组([$class 或 $object, $method])。可调用函数应返回要创建的对象的新实例。
$params array

构造函数参数

返回值 object

创建的对象

抛出 yii\base\InvalidConfigException

如果配置无效。

                public static function createObject($type, array $params = [])
{
    if (is_string($type)) {
        return static::$container->get($type, $params);
    }
    if (is_callable($type, true)) {
        return static::$container->invoke($type, $params);
    }
    if (!is_array($type)) {
        throw new InvalidConfigException('Unsupported configuration type: ' . gettype($type));
    }
    if (isset($type['__class'])) {
        $class = $type['__class'];
        unset($type['__class'], $type['class']);
        return static::$container->get($class, $params, $type);
    }
    if (isset($type['class'])) {
        $class = $type['class'];
        unset($type['class']);
        return static::$container->get($class, $params, $type);
    }
    throw new InvalidConfigException('Object configuration must be an array containing a "class" or "__class" element.');
}

            
debug() public static method (available since version 2.0.14)

定义于: yii\BaseYii::debug()

记录调试消息。

跟踪消息主要用于开发目的,以查看某些代码的执行流程。此方法仅在应用程序处于调试模式时才会记录消息。

public static void debug ( $message, $category 'application' )
$message string|array

要记录的消息。这可以是简单的字符串或更复杂的数据结构,例如数组。

$category string

消息的类别。

                public static function debug($message, $category = 'application')
{
    if (YII_DEBUG) {
        static::getLogger()->log($message, Logger::LEVEL_TRACE, $category);
    }
}

            
endProfile() public static method

定义于: yii\BaseYii::endProfile()

标记代码块结束进行性能分析。

这必须与之前对 beginProfile() 的调用相匹配,且类别名称相同。

另请参阅 beginProfile()

public static void endProfile ( $token, $category 'application' )
$token string

代码块的标记

$category string

此日志消息的类别

                public static function endProfile($token, $category = 'application')
{
    static::getLogger()->log($token, Logger::LEVEL_PROFILE_END, $category);
}

            
error() public static method

定义于: yii\BaseYii::error()

记录错误消息。

当应用程序执行过程中发生不可恢复的错误时,通常会记录错误消息。

public static void error ( $message, $category 'application' )
$message string|array

要记录的消息。这可以是简单的字符串或更复杂的数据结构,例如数组。

$category string

消息的类别。

                public static function error($message, $category = 'application')
{
    static::getLogger()->log($message, Logger::LEVEL_ERROR, $category);
}

            
getAlias() public static method

定义于: yii\BaseYii::getAlias()

将路径别名转换为实际路径。

翻译按照以下步骤进行

  1. 如果给定的别名不以 '@' 开头,则直接返回,不做任何修改;
  2. 否则,查找与给定别名开头部分匹配的最长注册别名。如果存在,则将给定别名的匹配部分替换为相应的注册路径。
  3. 根据 $throwException 参数抛出异常或返回 false。

例如,默认情况下 '@yii' 被注册为 Yii 框架目录的别名,例如 '/path/to/yii'。别名 '@yii/web' 随后将被转换为 '/path/to/yii/web'。

如果您注册了两个别名 '@foo' 和 '@foo/bar'。那么翻译 '@foo/bar/config' 将用相应的注册路径替换 '@foo/bar' 部分(而不是 '@foo')。这是因为最长的别名优先。

但是,如果要翻译的别名是 '@foo/barbar/config',则将替换 '@foo' 而不是 '@foo/bar',因为 '/' 用作边界字符。

注意,此方法不检查返回的路径是否存在。

有关更多信息,请参阅 关于别名的指南文章

另请参阅 setAlias()

public static string|false getAlias ( $alias, $throwException true )
$alias string

要翻译的别名。

$throwException boolean

如果给定的别名无效是否抛出异常。如果为 false 且给定无效别名,则此方法将返回 false。

返回值 string|false

与别名对应的路径,如果根别名未经注册,则为 false。

抛出 yii\base\InvalidArgumentException

如果别名无效而 $throwException 为 true。

                public static function getAlias($alias, $throwException = true)
{
    if (strncmp((string)$alias, '@', 1) !== 0) {
        // not an alias
        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);
        }
        foreach (static::$aliases[$root] as $name => $path) {
            if (strpos($alias . '/', $name . '/') === 0) {
                return $path . substr($alias, strlen($name));
            }
        }
    }
    if ($throwException) {
        throw new InvalidArgumentException("Invalid path alias: $alias");
    }
    return false;
}

            
getLogger() public static method
public static yii\log\Logger getLogger ( )
返回值 yii\log\Logger

消息记录器

                public static function getLogger()
{
    if (self::$_logger !== null) {
        return self::$_logger;
    }
    return self::$_logger = static::createObject('yii\log\Logger');
}

            
getObjectVars() public static method

定义于: yii\BaseYii::getObjectVars()

返回对象的公共成员变量。

提供此方法是为了能够获取对象的公共成员变量。它与 "get_object_vars()" 不同,因为后者将在对象自身内部调用时返回私有和受保护的变量。

public static array getObjectVars ( $object )
$object object

要处理的对象

返回值 array

对象的公共成员变量

                public static function getObjectVars($object)
{
    return get_object_vars($object);
}

            
getRootAlias() public static method

定义于: yii\BaseYii::getRootAlias()

返回给定别名的根别名部分。

根别名是指之前通过 setAlias() 注册的别名。如果给定别名匹配多个根别名,则将返回最长的那个。

public static string|false getRootAlias ( $alias )
$alias string

别名

返回值 string|false

根别名,如果未找到根别名,则为 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;
        }
        foreach (static::$aliases[$root] as $name => $path) {
            if (strpos($alias . '/', $name . '/') === 0) {
                return $name;
            }
        }
    }
    return false;
}

            
getVersion() public static method

定义于: yii\BaseYii::getVersion()

返回表示 Yii 框架当前版本的字符串。

public static string getVersion ( )
返回值 string

Yii 框架的版本

                public static function getVersion()
{
    return '2.0.50-dev';
}

            
info() public static method

定义于: yii\BaseYii::info()

记录信息消息。

信息消息通常由应用程序记录,以记录重要事件(例如管理员登录)。

public static void info ( $message, $category 'application' )
$message string|array

要记录的消息。这可以是简单的字符串或更复杂的数据结构,例如数组。

$category string

消息的类别。

                public static function info($message, $category = 'application')
{
    static::getLogger()->log($message, Logger::LEVEL_INFO, $category);
}

            
powered() 公共静态方法
自 2.0.14 版本起已弃用,该方法将在 2.1.0 版本中移除。

定义于: yii\BaseYii::powered()

返回一个 HTML 超链接,可以在你的网页上显示 "Powered by Yii Framework" 信息。

public static string powered ( )
返回值 string

一个 HTML 超链接,可以在你的网页上显示“由 Yii 框架提供支持”的信息。

                public static function powered()
{
    return \Yii::t('yii', 'Powered by {yii}', [
        'yii' => '<a href="https://yiiframework.cn/" rel="external">' . \Yii::t('yii', 'Yii Framework') . '</a>',
    ]);
}

            
setAlias() 公共静态方法

定义于: yii\BaseYii::setAlias()

注册路径别名。

路径别名是表示较长路径(文件路径、URL 等)的简短名称。例如,我们使用 '@yii' 作为 Yii 框架目录路径的别名。

路径别名必须以字符 '@' 开头,以便可以轻松地将其与非别名路径区分开来。

请注意,此方法不会检查给定路径是否存在。它只将别名与路径关联起来。

给定路径中的任何尾随 '/' 和 '\' 字符都将被修剪。

有关更多信息,请参阅 关于别名的指南文章

另请参阅 getAlias().

public static void setAlias ( $alias, $path )
$alias string

别名名称(例如 "@yii")。它必须以 '@' 字符开头。它可能包含正斜杠 '/',它在由 getAlias() 执行别名转换时用作边界字符。

$path string|null

与别名相对应的路径。如果此值为 null,则别名将被移除。尾随 '/' 和 '\' 字符将被修剪。这可以是

  • 目录或文件路径(例如 /tmp/tmp/main.txt
  • URL(例如 https://yiiframework.cn
  • 路径别名(例如 @yii/base)。在这种情况下,路径别名将首先通过调用 getAlias() 转换为实际路径。
抛出 yii\base\InvalidArgumentException

如果 $path 是一个无效的别名。

                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]);
        }
    }
}

            
setLogger() 公共静态方法

定义于: yii\BaseYii::setLogger()

设置日志记录器对象。

public static void setLogger ( $logger )
$logger yii\log\Logger|null

日志记录对象。

                public static function setLogger($logger)
{
    self::$_logger = $logger;
}

            
t() 公共静态方法

定义于: yii\BaseYii::t()

将消息翻译成指定的语言。

这是 yii\i18n\I18N::translate() 的快捷方法。

翻译将根据消息类别进行,并将使用目标语言。

你可以在翻译消息中添加参数,这些参数将在翻译后用相应的值替换。此格式是在参数名周围使用花括号,如下例所示

$username = 'Alexander';
echo \Yii::t('app', 'Hello, {username}!', ['username' => $username]);

使用 PHP intl 扩展 消息格式化程序支持进一步的消息参数格式化。有关更多详细信息,请参阅 yii\i18n\I18N::translate()

public static string t ( $category, $message, $params = [], $language null )
$category string

消息类别。

$message string

要翻译的消息。

$params array

将用于替换消息中对应占位符的参数。

$language string|null

语言代码(例如 en-USen)。如果此值为 null,将使用当前的 应用程序语言

返回值 string

翻译后的消息。

                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);
    }
    $placeholders = [];
    foreach ((array) $params as $name => $value) {
        $placeholders['{' . $name . '}'] = $value;
    }
    return ($placeholders === []) ? $message : strtr($message, $placeholders);
}

            
trace() 公共静态方法
自 2.0.14 版本起已弃用。请改用 debug()

定义于: yii\BaseYii::trace()

debug() 的别名。

public static void trace ( $message, $category 'application' )
$message string|array

要记录的消息。这可以是简单的字符串或更复杂的数据结构,例如数组。

$category string

消息的类别。

                public static function trace($message, $category = 'application')
{
    static::debug($message, $category);
}

            
warning() 公共静态方法

定义于: yii\BaseYii::warning()

记录警告消息。

警告消息通常在执行可以继续的情况下发生错误时记录。

public static void warning ( $message, $category 'application' )
$message string|array

要记录的消息。这可以是简单的字符串或更复杂的数据结构,例如数组。

$category string

消息的类别。

                public static function warning($message, $category = 'application')
{
    static::getLogger()->log($message, Logger::LEVEL_WARNING, $category);
}