0 关注者

类 yii\web\ErrorHandler

继承yii\web\ErrorHandler » yii\base\ErrorHandler » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
自可用版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/ErrorHandler.php

ErrorHandler 处理未捕获的 PHP 错误和异常。

ErrorHandler 使用基于错误性质和应用程序运行模式的适当视图显示这些错误。

ErrorHandler 默认情况下被配置为 yii\base\Application 的应用程序组件。您可以通过 Yii::$app->errorHandler 访问该实例。

有关 ErrorHandler 的更多详细信息和使用信息,请参阅 指南文章关于处理错误

公共属性

隐藏继承属性

属性 类型 描述 定义于
$behaviors yii\base\Behavior[] 附加到此组件的行为列表。 yii\base\Component
$callStackItemView string 渲染异常和错误调用堆栈元素的视图文件路径。 yii\web\ErrorHandler
$discardExistingOutput boolean 错误显示之前是否丢弃任何现有页面输出。 yii\base\ErrorHandler
$displayVars array 应在错误页面上显示的 PHP 预定义变量列表。 yii\web\ErrorHandler
$errorAction string|null 用于显示外部错误的控制器操作的路由(例如,site/error)。 yii\web\ErrorHandler
$errorView string 渲染没有调用堆栈信息的异常的视图文件路径。 yii\web\ErrorHandler
$exception Throwable|null 当前正在处理的异常。 yii\base\ErrorHandler
$exceptionView string 渲染异常的视图文件路径。 yii\web\ErrorHandler
$maxSourceLines integer 要显示的源代码行数的最大值。 yii\web\ErrorHandler
$maxTraceSourceLines integer integer yii\web\ErrorHandler
要显示的跟踪源代码行数的最大值。 integer $memoryReserveSize yii\base\ErrorHandler
保留内存的大小。 string $previousExceptionView yii\web\ErrorHandler
渲染先前异常的视图文件路径。 boolean $silentExitOnException yii\base\ErrorHandler
如果为 true - handleException() 将用 ExitCode::OK 结束脚本。 string $traceLine yii\web\ErrorHandler

带有占位符的跟踪行,将进行替换。

公共方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\Component
__clone() 在克隆现有对象后调用此方法。 yii\base\Component
__construct() 构造函数。 yii\base\BaseObject
__get() 返回组件属性的值。 yii\base\Component
__isset() 检查属性是否已设置,即已定义且不为 null。 yii\base\Component
__set() 设置组件属性的值。 yii\base\Component
__unset() 将组件属性设置为 null。 yii\base\Component
addTypeLinks() 向给定的 PHP 类型/类添加信息链接。 yii\web\ErrorHandler
argumentsToString() 将参数数组转换为其字符串表示形式。 yii\web\ErrorHandler
attachBehavior() 将行为附加到此组件。 yii\base\Component
attachBehaviors() 将行为列表附加到组件。 yii\base\Component
behaviors() 返回此组件应表现为的行为列表。 yii\base\Component
canGetProperty() 返回一个值,指示属性是否可以读取。 yii\base\Component
canSetProperty() 返回一个值,指示属性是否可以设置。 yii\base\Component
className() 返回此类的完全限定名称。 yii\base\BaseObject
clearOutput() 删除调用此方法之前回显的所有输出。 yii\base\ErrorHandler
convertExceptionToError() 将异常转换为 PHP 错误。 yii\base\ErrorHandler
convertExceptionToString() 将异常转换为简单字符串。 yii\base\ErrorHandler
convertExceptionToVerboseString() 将异常转换为包含有关异常及其跟踪的详细信息的字符串。 yii\base\ErrorHandler
createFrameworkVersionLink() 创建包含引用当前框架版本和版本号文本的页面的 HTML 链接。 yii\web\ErrorHandler
createHttpStatusLink() 创建包含指向给定 HTTP 状态代码信息的页面的 HTML。 yii\web\ErrorHandler
createServerInformationLink() 创建包含引用确定 Web 服务器软件的主页及其完整名称的 HTML 链接的字符串。 yii\web\ErrorHandler
detachBehavior() 从组件中分离行为。 yii\base\Component
detachBehaviors() 从组件中分离所有行为。 yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为附加到此组件。 yii\base\Component
getBehavior() 返回命名行为对象。 yii\base\Component
getBehaviors() 返回附加到此组件的所有行为。 yii\base\Component
getExceptionName() 返回人类可读的异常名称。 yii\web\ErrorHandler
handleError() 处理 PHP 执行错误,例如警告和通知。 yii\base\ErrorHandler
handleException() 处理未捕获的 PHP 异常。 yii\base\ErrorHandler
handleFatalError() 处理致命的 PHP 错误。 yii\base\ErrorHandler
handleHhvmError() 处理 HHVM 执行错误,例如警告和通知。 yii\base\ErrorHandler
hasEventHandlers() 返回一个值,指示是否为命名事件附加了任何处理程序。 yii\base\Component
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\Component
hasProperty() 返回一个值,指示此组件是否定义了属性。 yii\base\Component
htmlEncode() 将特殊字符转换为 HTML 实体。 yii\web\ErrorHandler
init() yii\base\ErrorHandler
isCoreFile() 确定给定文件名称是否属于框架。 yii\web\ErrorHandler
logException() 记录给定的异常。 yii\base\ErrorHandler
off() 从此组件中分离现有事件处理程序。 yii\base\Component
on() 将事件处理程序附加到事件。 yii\base\Component
register() 注册此错误处理程序。 yii\base\ErrorHandler
renderCallStack() 渲染调用堆栈。 yii\web\ErrorHandler
renderCallStackItem() 渲染单个调用堆栈元素。 yii\web\ErrorHandler
renderFile() 将视图文件渲染为 PHP 脚本。 yii\web\ErrorHandler
renderPreviousExceptions() 渲染给定异常的先前异常堆栈。 yii\web\ErrorHandler
renderRequest() 渲染请求的全局变量。 yii\web\ErrorHandler
trigger() 触发事件。 yii\base\Component
unregister() 通过恢复 PHP 错误和异常处理程序来取消注册此错误处理程序。 yii\base\ErrorHandler

受保护的方法

公共方法

方法 描述 定义于
convertExceptionToArray() 将异常转换为数组。 yii\web\ErrorHandler
getTypeUrl() 返回给定 PHP 类型/类的信息链接 URL。 yii\web\ErrorHandler
handleFallbackExceptionMessage() 处理在 handleException() 中异常处理期间抛出的异常。 yii\base\ErrorHandler
renderException() 渲染异常。 yii\web\ErrorHandler
shouldRenderSimpleHtml() yii\web\ErrorHandler

事件

隐藏继承事件

事件 类型 描述 定义于
EVENT_SHUTDOWN yii\base\Event 当处理程序通过 handleFatalError() 由 shutdown 函数调用时触发的事件。 (自 2.0.46 版本可用) yii\base\ErrorHandler

属性详细信息

隐藏继承属性

$callStackItemView 公有属性

渲染异常和错误调用堆栈元素的视图文件路径。

public 字符串 $callStackItemView '@yii/views/errorHandler/callStackItem.php'
$displayVars 公有属性 (自 2.0.7 版本开始可用)

应在错误页面显示的 PHP 预定义变量列表。请注意,变量必须通过 $GLOBALS 可访问。否则将不会显示。默认为 ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION']

另请参阅 renderRequest()

public 数组 $displayVars = [
    
'_GET',
    
'_POST',
    
'_FILES',
    
'_COOKIE',
    
'_SESSION',
]
$errorAction 公有属性

路由 (例如 site/error) 到将用于显示外部错误的控制器操作。在操作中,可以使用 Yii::$app->errorHandler->exception 获取错误信息。此属性默认为 null,这意味着 ErrorHandler 将处理错误显示。

public 字符串|null $errorAction null
$errorView 公有属性

渲染没有调用堆栈信息的异常的视图文件路径。

public 字符串 $errorView '@yii/views/errorHandler/error.php'
$exceptionView 公有属性

渲染异常的视图文件路径。

public 字符串 $exceptionView '@yii/views/errorHandler/exception.php'
$maxSourceLines 公有属性

要显示的源代码行数的最大值。默认为 19。

public 整数 $maxSourceLines 19
$maxTraceSourceLines 公有属性

要显示的跟踪源代码行数的最大值。默认为 13。

$previousExceptionView 公有属性

$previousExceptionView

public 字符串 $previousExceptionView '@yii/views/errorHandler/previousException.php'
$traceLine 公有属性 (自 2.0.14 版本开始可用)

跟踪行,其中包含将被替换的占位符。占位符是 {file}、{line} 和 {text},字符串应如下所示。

文件:{file} - 行:{line} - 文本:{text}

另请参阅 https://github.com/yiisoft/yii2-debug#open-files-in-ide

public 字符串 $traceLine '{html}'

方法详细信息

公共方法

__call() 公有方法

定义于: yii\base\Component::__call()

调用不是类方法的命名方法。

此方法将检查是否有任何附加的行为具有命名方法,如果可用则执行它。

请勿直接调用此方法,因为它是一个 PHP 魔术方法,在调用未知方法时将隐式调用。

public 混合 __call ( $name, $params )
$name string

方法名称

$params array

方法参数

返回 混合

方法返回值

抛出 yii\base\UnknownMethodException

调用未知方法时

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() 公有方法

定义于: yii\base\Component::__clone()

在克隆现有对象后调用此方法。

它会移除所有行为,因为它们都附加到旧对象。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() 公有方法

定义于: yii\base\BaseObject::__construct()

构造函数。

默认实现做两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果在子类中重写了此方法,建议

  • 构造函数的最后一个参数是配置数组,如这里的 $config
  • 在构造函数的末尾调用父实现。
public void __construct ( $config = [] )
$config array

将用于初始化对象属性的名称-值对。

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

定义于: yii\base\Component::__get()

返回组件属性的值。

此方法将按以下顺序进行检查并相应地执行:

  • 由 getter 定义的属性:返回 getter 结果
  • 行为的属性:返回行为属性值

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $value = $component->property; 时会隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名称

返回 混合

属性值或行为属性的值

抛出 yii\base\UnknownPropertyException

如果未定义属性

抛出 yii\base\InvalidCallException

如果属性是只写属性。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

定义于: yii\base\Component::__isset()

检查属性是否已设置,即已定义且不为 null。

此方法将按以下顺序进行检查并相应地执行:

  • 由 setter 定义的属性:返回属性是否已设置
  • 行为的属性:返回属性是否已设置
  • 对于不存在的属性,返回 false

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 isset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

属性名称或事件名称

返回 boolean

命名属性是否已设置

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() 公共方法

定义于: yii\base\Component::__set()

设置组件属性的值。

此方法将按以下顺序进行检查并相应地执行:

  • 由 setter 定义的属性:设置属性值
  • 格式为“on xyz” 的事件:将处理程序附加到“xyz”事件
  • 格式为“as xyz” 的行为:附加名为“xyz”的行为
  • 行为的属性:设置行为属性值

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $component->property = $value; 时会隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名称或事件名称

$value 混合

属性值

抛出 yii\base\UnknownPropertyException

如果未定义属性

抛出 yii\base\InvalidCallException

如果属性是只读的。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() 公共方法

定义于: yii\base\Component::__unset()

将组件属性设置为 null。

此方法将按以下顺序进行检查并相应地执行:

  • 由 setter 定义的属性:将属性值设置为 null
  • 行为的属性:将属性值设置为 null

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($component->property) 时会隐式调用。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名称

抛出 yii\base\InvalidCallException

如果属性是只读的。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
addTypeLinks() 公共方法

向给定的 PHP 类型/类添加信息链接。

public string addTypeLinks ( $code )
$code string

将要链接的类型/类名。

返回 string

用 HTML 类型/类名链接。

argumentsToString() 公共方法

将参数数组转换为其字符串表示形式。

public string argumentsToString ( $args )
$args array

要转换的参数数组

返回 string

参数数组的字符串表示形式

                public function argumentsToString($args)
{
    $count = 0;
    $isAssoc = $args !== array_values($args);
    foreach ($args as $key => $value) {
        $count++;
        if ($count >= 5) {
            if ($count > 5) {
                unset($args[$key]);
            } else {
                $args[$key] = '...';
            }
            continue;
        }
        if (is_object($value)) {
            $args[$key] = '<span class="title">' . $this->htmlEncode(get_class($value)) . '</span>';
        } elseif (is_bool($value)) {
            $args[$key] = '<span class="keyword">' . ($value ? 'true' : 'false') . '</span>';
        } elseif (is_string($value)) {
            $fullValue = $this->htmlEncode($value);
            if (mb_strlen($value, 'UTF-8') > 32) {
                $displayValue = $this->htmlEncode(mb_substr($value, 0, 32, 'UTF-8')) . '...';
                $args[$key] = "<span class=\"string\" title=\"$fullValue\">'$displayValue'</span>";
            } else {
                $args[$key] = "<span class=\"string\">'$fullValue'</span>";
            }
        } elseif (is_array($value)) {
            $args[$key] = '[' . $this->argumentsToString($value) . ']';
        } elseif ($value === null) {
            $args[$key] = '<span class="keyword">null</span>';
        } elseif (is_resource($value)) {
            $args[$key] = '<span class="keyword">resource</span>';
        } else {
            $args[$key] = '<span class="number">' . $value . '</span>';
        }
        if (is_string($key)) {
            $args[$key] = '<span class="string">\'' . $this->htmlEncode($key) . "'</span> => $args[$key]";
        } elseif ($isAssoc) {
            $args[$key] = "<span class=\"number\">$key</span> => $args[$key]";
        }
    }
    return implode(', ', $args);
}

            
attachBehavior() 公共方法

定义于: yii\base\Component::attachBehavior()

将行为附加到此组件。

此方法将根据给定的配置创建行为对象。之后,通过调用 yii\base\Behavior::attach() 方法将行为对象附加到此组件。

另请参阅 detachBehavior()

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

行为的名称。

$behavior string|array|yii\base\Behavior

行为配置。这可以是以下之一

返回 yii\base\Behavior

行为对象

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() 公共方法

定义于: yii\base\Component::attachBehaviors()

将行为列表附加到组件。

每个行为都按名称索引,应该是 yii\base\Behavior 对象、指定行为类的字符串或创建行为的配置数组。

另请参阅 attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

要附加到组件的行为列表

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() 公共方法

定义于: yii\base\Component::behaviors()

返回此组件应表现为的行为列表。

子类可以重写此方法来指定它们想要表现为的行为。

此方法的返回值应是一个按行为名称索引的行为对象的数组或配置数组。行为配置可以是指定行为类的字符串,或者以下结构的数组

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

请注意,行为类必须扩展 yii\base\Behavior。可以使用名称或匿名方式附加行为。当使用名称作为数组键时,可以使用此名称稍后通过 getBehavior() 获取行为,或使用 detachBehavior() detach 行为。匿名行为无法检索或分离。

此方法中声明的行为将自动附加到组件(按需)。

public array behaviors ( )
返回 array

行为配置。

                public function behaviors()
{
    return [];
}

            
canGetProperty() 公共方法

定义于: yii\base\Component::canGetProperty()

返回一个值,指示属性是否可以读取。

如果可以读取属性,则:

  • 类中存在与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 类中存在具有指定名称的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可读属性(当 $checkBehaviors 为 true 时)。

另请参阅 canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回 boolean

属性是否可读

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() 公共方法

定义于: yii\base\Component::canSetProperty()

返回一个值,指示属性是否可以设置。

如果可以写入属性,则:

  • 类中存在与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 类中存在具有指定名称的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的可写属性(当 $checkBehaviors 为 true 时)。

另请参阅 canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回 boolean

属性是否可写

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() 公共静态方法
自 2.0.14 起已弃用。在 PHP >=5.5 中,请改用 ::class

定义于: yii\base\BaseObject::className()

返回此类的完全限定名称。

public static string className ( )
返回 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
clearOutput() 公共方法

定义于: yii\base\ErrorHandler::clearOutput()

删除调用此方法之前回显的所有输出。

public void clearOutput ( )

                public function clearOutput()
{
    // the following manual level counting is to deal with zlib.output_compression set to On
    for ($level = ob_get_level(); $level > 0; --$level) {
        if (!@ob_end_clean()) {
            ob_clean();
        }
    }
}

            
convertExceptionToArray() 保护方法

将异常转换为数组。

protected array convertExceptionToArray ( $exception )
$exception Throwable

正在转换的异常

返回 array

异常的数组表示形式。

                protected function convertExceptionToArray($exception)
{
    if (!YII_DEBUG && !$exception instanceof UserException && !$exception instanceof HttpException) {
        $exception = new HttpException(500, Yii::t('yii', 'An internal server error occurred.'));
    }
    $array = [
        'name' => ($exception instanceof Exception || $exception instanceof ErrorException) ? $exception->getName() : 'Exception',
        'message' => $exception->getMessage(),
        'code' => $exception->getCode(),
    ];
    if ($exception instanceof HttpException) {
        $array['status'] = $exception->statusCode;
    }
    if (YII_DEBUG) {
        $array['type'] = get_class($exception);
        if (!$exception instanceof UserException) {
            $array['file'] = $exception->getFile();
            $array['line'] = $exception->getLine();
            $array['stack-trace'] = explode("\n", $exception->getTraceAsString());
            if ($exception instanceof \yii\db\Exception) {
                $array['error-info'] = $exception->errorInfo;
            }
        }
    }
    if (($prev = $exception->getPrevious()) !== null) {
        $array['previous'] = $this->convertExceptionToArray($prev);
    }
    return $array;
}

            
convertExceptionToError() 公共静态方法

定义于: yii\base\ErrorHandler::convertExceptionToError()

将异常转换为 PHP 错误。

此方法可用于将方法(如 __toString())内部的异常转换为 PHP 错误,因为无法在其中抛出异常。

public static never convertExceptionToError ( $exception )
$exception Throwable

要转换为 PHP 错误的异常。

                public static function convertExceptionToError($exception)
{
    trigger_error(static::convertExceptionToString($exception), E_USER_ERROR);
}

            
convertExceptionToString() 公共静态方法

定义于: yii\base\ErrorHandler::convertExceptionToString()

将异常转换为简单字符串。

public static string convertExceptionToString ( $exception )
$exception Throwable

正在转换的异常

返回 string

异常的字符串表示形式。

                public static function convertExceptionToString($exception)
{
    if ($exception instanceof UserException) {
        return "{$exception->getName()}: {$exception->getMessage()}";
    }
    if (YII_DEBUG) {
        return static::convertExceptionToVerboseString($exception);
    }
    return 'An internal server error occurred.';
}

            
convertExceptionToVerboseString() 公共静态方法(自 2.0.14 版本起可用)

定义于: yii\base\ErrorHandler::convertExceptionToVerboseString()

将异常转换为包含有关异常及其跟踪的详细信息的字符串。

public static string convertExceptionToVerboseString ( $exception )
$exception Throwable

正在转换的异常

返回 string

异常的字符串表示形式。

                public static function convertExceptionToVerboseString($exception)
{
    if ($exception instanceof Exception) {
        $message = "Exception ({$exception->getName()})";
    } elseif ($exception instanceof ErrorException) {
        $message = (string)$exception->getName();
    } else {
        $message = 'Exception';
    }
    $message .= " '" . get_class($exception) . "' with message '{$exception->getMessage()}' \n\nin "
        . $exception->getFile() . ':' . $exception->getLine() . "\n\n"
        . "Stack trace:\n" . $exception->getTraceAsString();
    return $message;
}

            
createFrameworkVersionLink() 公共方法

创建包含引用当前框架版本和版本号文本的页面的 HTML 链接。

public string createFrameworkVersionLink ( )
返回 string

框架版本信息超链接。

createHttpStatusLink() 公共方法

创建包含指向给定 HTTP 状态代码信息的页面的 HTML。

public string createHttpStatusLink ( $statusCode, $statusDescription )
$statusCode integer

用于生成信息链接。

$statusDescription string

状态代码后显示的描述。

返回 string

带有 HTTP 状态代码信息的生成的 HTML。

createServerInformationLink() 公共方法

创建包含引用确定 Web 服务器软件的主页及其完整名称的 HTML 链接的字符串。

public string createServerInformationLink ( )
返回 string

服务器软件信息超链接。

detachBehavior() 公共方法

定义于: yii\base\Component::detachBehavior()

从组件中分离行为。

将调用行为的 yii\base\Behavior::detach() 方法。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

行为的名称。

返回 yii\base\Behavior|null

分离的行为。如果行为不存在,则为 Null。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() 公共方法

定义于: yii\base\Component::detachBehaviors()

从组件中分离所有行为。

公共 void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() 公共方法

定义于: yii\base\Component::ensureBehaviors()

确保在 behaviors() 中声明的行为附加到此组件。

公共 void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
getBehavior() 公共方法

定义于: yii\base\Component::getBehavior()

返回命名行为对象。

公共 yii\base\Behavior|null getBehavior ( $name )
$name string

行为名称

返回 yii\base\Behavior|null

行为对象,如果行为不存在则为 null

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() 公共方法

定义于: yii\base\Component::getBehaviors()

返回附加到此组件的所有行为。

公共 yii\base\Behavior[] getBehaviors ( )
返回 yii\base\Behavior[]

附加到此组件的行为列表

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getExceptionName() 公共方法

返回人类可读的异常名称。

公共 string|null getExceptionName ( $exception )
$exception Throwable
返回 string|null

人类可读的异常名称,如果无法确定则为 null

                public function getExceptionName($exception)
{
    if ($exception instanceof \yii\base\Exception || $exception instanceof \yii\base\InvalidCallException || $exception instanceof \yii\base\InvalidParamException || $exception instanceof \yii\base\UnknownMethodException) {
        return $exception->getName();
    }
    return null;
}

            
getTypeUrl() 保护方法

返回给定 PHP 类型/类的信息链接 URL。

另请参阅 addTypeLinks()

保护 string|null getTypeUrl ( $class, $method )
$class string

类型或类名。

$method string|null

方法名。

返回 string|null

信息链接 URL。

                protected function getTypeUrl($class, $method)
{
    if (strncmp($class, 'yii\\', 4) !== 0) {
        return null;
    }
    $page = $this->htmlEncode(strtolower(str_replace('\\', '-', $class)));
    $url = "https://yiiframework.cn/doc-2.0/$page.html";
    if ($method) {
        $url .= "#$method()-detail";
    }
    return $url;
}

            
handleError() 公共方法

定义于: yii\base\ErrorHandler::handleError()

处理 PHP 执行错误,例如警告和通知。

此方法用作 PHP 错误处理程序。它将简单地引发 yii\base\ErrorException

公共 boolean handleError ( $code, $message, $file, $line )
$code integer

引发错误的级别。

$message string

错误消息。

$file string

引发错误的文件名。

$line integer

引发错误的行号。

返回 boolean

普通错误处理程序是否继续。

抛出 yii\base\ErrorException

                public function handleError($code, $message, $file, $line)
{
    if (error_reporting() & $code) {
        // load ErrorException manually here because autoloading them will not work
        // when error occurs while autoloading a class
        if (!class_exists('yii\\base\\ErrorException', false)) {
            require_once __DIR__ . '/ErrorException.php';
        }
        $exception = new ErrorException($message, $code, $code, $file, $line);
        if (PHP_VERSION_ID < 70400) {
            // prior to PHP 7.4 we can't throw exceptions inside of __toString() - it will result a fatal error
            $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
            array_shift($trace);
            foreach ($trace as $frame) {
                if ($frame['function'] === '__toString') {
                    $this->handleException($exception);
                    if (defined('HHVM_VERSION')) {
                        flush();
                    }
                    exit(1);
                }
            }
        }
        throw $exception;
    }
    return false;
}

            
handleException() 公共方法

定义于: yii\base\ErrorHandler::handleException()

处理未捕获的 PHP 异常。

此方法实现为 PHP 异常处理程序。

公共 void handleException ( $exception )
$exception Throwable

未捕获的异常

                public function handleException($exception)
{
    if ($exception instanceof ExitException) {
        return;
    }
    $this->exception = $exception;
    // disable error capturing to avoid recursive errors while handling exceptions
    $this->unregister();
    // set preventive HTTP status code to 500 in case error handling somehow fails and headers are sent
    // HTTP exceptions will override this value in renderException()
    if (PHP_SAPI !== 'cli') {
        http_response_code(500);
    }
    try {
        $this->logException($exception);
        if ($this->discardExistingOutput) {
            $this->clearOutput();
        }
        $this->renderException($exception);
        if (!$this->silentExitOnException) {
            \Yii::getLogger()->flush(true);
            if (defined('HHVM_VERSION')) {
                flush();
            }
            exit(1);
        }
    } catch (\Exception $e) {
        // an other exception could be thrown while displaying the exception
        $this->handleFallbackExceptionMessage($e, $exception);
    } catch (\Throwable $e) {
        // additional check for \Throwable introduced in PHP 7
        $this->handleFallbackExceptionMessage($e, $exception);
    }
    $this->exception = null;
}

            
handleFallbackExceptionMessage() 保护方法 (自版本 2.0.11 起可用)

定义于: yii\base\ErrorHandler::handleFallbackExceptionMessage()

处理在 handleException() 中异常处理期间抛出的异常。

保护 void handleFallbackExceptionMessage ( $exception, $previousException )
$exception Throwable

在主异常处理期间抛出的异常。

$previousException Throwable

handleException() 中处理的主异常。

                protected function handleFallbackExceptionMessage($exception, $previousException)
{
    $msg = "An Error occurred while handling another error:\n";
    $msg .= (string) $exception;
    $msg .= "\nPrevious exception:\n";
    $msg .= (string) $previousException;
    if (YII_DEBUG) {
        if (PHP_SAPI === 'cli') {
            echo $msg . "\n";
        } else {
            echo '<pre>' . htmlspecialchars($msg, ENT_QUOTES, Yii::$app->charset) . '</pre>';
        }
        $msg .= "\n\$_SERVER = " . VarDumper::export($_SERVER);
    } else {
        echo 'An internal server error occurred.';
    }
    error_log($msg);
    if (defined('HHVM_VERSION')) {
        flush();
    }
    exit(1);
}

            
handleFatalError() 公共方法

定义于: yii\base\ErrorHandler::handleFatalError()

处理致命的 PHP 错误。

公共 void handleFatalError ( )

                public function handleFatalError()
{
    unset($this->_memoryReserve);
    if (isset($this->_workingDirectory)) {
        // fix working directory for some Web servers e.g. Apache
        chdir($this->_workingDirectory);
        // flush memory
        unset($this->_workingDirectory);
    }
    $error = error_get_last();
    if ($error === null) {
        return;
    }
    // load ErrorException manually here because autoloading them will not work
    // when error occurs while autoloading a class
    if (!class_exists('yii\\base\\ErrorException', false)) {
        require_once __DIR__ . '/ErrorException.php';
    }
    if (!ErrorException::isFatalError($error)) {
        return;
    }
    if (!empty($this->_hhvmException)) {
        $this->exception = $this->_hhvmException;
    } else {
        $this->exception = new ErrorException(
            $error['message'],
            $error['type'],
            $error['type'],
            $error['file'],
            $error['line']
        );
    }
    unset($error);
    $this->logException($this->exception);
    if ($this->discardExistingOutput) {
        $this->clearOutput();
    }
    $this->renderException($this->exception);
    // need to explicitly flush logs because exit() next will terminate the app immediately
    Yii::getLogger()->flush(true);
    if (defined('HHVM_VERSION')) {
        flush();
    }
    $this->trigger(static::EVENT_SHUTDOWN);
    // ensure it is called after user-defined shutdown functions
    register_shutdown_function(function () {
        exit(1);
    });
}

            
handleHhvmError() 公共方法 (自版本 2.0.6 起可用)

定义于: yii\base\ErrorHandler::handleHhvmError()

处理 HHVM 执行错误,例如警告和通知。

此方法用作 HHVM 错误处理程序。它将存储将在致命错误处理程序中使用的异常。

公共 boolean handleHhvmError ( $code, $message, $file, $line, $context, $backtrace )
$code integer

引发错误的级别。

$message string

错误消息。

$file string

引发错误的文件名。

$line integer

引发错误的行号。

$context 混合
$backtrace 混合

错误跟踪

返回 boolean

普通错误处理程序是否继续。

抛出 yii\base\ErrorException

                public function handleHhvmError($code, $message, $file, $line, $context, $backtrace)
{
    if ($this->handleError($code, $message, $file, $line)) {
        return true;
    }
    if (E_ERROR & $code) {
        $exception = new ErrorException($message, $code, $code, $file, $line);
        $ref = new \ReflectionProperty('\Exception', 'trace');
        $ref->setAccessible(true);
        $ref->setValue($exception, $backtrace);
        $this->_hhvmException = $exception;
    }
    return false;
}

            
hasEventHandlers() 公共方法

定义于: yii\base\Component::hasEventHandlers()

返回一个值,指示是否为命名事件附加了任何处理程序。

公共 boolean hasEventHandlers ( $name )
$name string

事件名称

返回 boolean

是否有任何处理程序附加到事件。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() 公共方法

定义于: yii\base\Component::hasMethod()

返回一个值,指示方法是否已定义。

如果定义了方法

  • 类具有指定名称的方法
  • 附加的行为具有给定名称的方法(当 $checkBehaviors 为 true 时)。
公共 boolean hasMethod ( $name, $checkBehaviors true )
$name string

属性名称

$checkBehaviors boolean

是否将行为的方法视为此组件的方法

返回 boolean

方法是否已定义

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() 公共方法

定义于: yii\base\Component::hasProperty()

返回一个值,指示此组件是否定义了属性。

属性已定义,如果

  • 类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写)。
  • 类中存在具有指定名称的成员变量(当 $checkVars 为 true 时);
  • 附加的行为具有给定名称的属性(当 $checkBehaviors 为 true 时)。

另请参阅

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

属性名称

$checkVars boolean

是否将成员变量视为属性

$checkBehaviors boolean

是否将行为的属性视为此组件的属性

返回 boolean

属性是否已定义

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
htmlEncode() public method

将特殊字符转换为 HTML 实体。

public string htmlEncode ( $text )
$text string

要编码的文本。

返回 string

编码后的原始文本。

                public function htmlEncode($text)
{
    return htmlspecialchars($text, ENT_NOQUOTES | ENT_SUBSTITUTE | ENT_HTML5, 'UTF-8');
}

            
init() public method
public void init ( )

                public function init()
{
    $this->silentExitOnException = $this->silentExitOnException !== null ? $this->silentExitOnException : YII_ENV_TEST;
    parent::init();
}

            
isCoreFile() public method

确定给定文件名称是否属于框架。

public boolean isCoreFile ( $file )
$file string

要检查的文件名。

返回 boolean

文件是否属于框架。

                public function isCoreFile($file)
{
    return $file === null || strpos(realpath($file), YII2_PATH . DIRECTORY_SEPARATOR) === 0;
}

            
logException() public method

定义于: yii\base\ErrorHandler::logException()

记录给定的异常。

public void logException ( $exception )
$exception Throwable

要记录的异常。

版本 描述
2.0.3 此方法现已公开。

                public function logException($exception)
{
    $category = get_class($exception);
    if ($exception instanceof HttpException) {
        $category = 'yii\\web\\HttpException:' . $exception->statusCode;
    } elseif ($exception instanceof \ErrorException) {
        $category .= ':' . $exception->getSeverity();
    }
    Yii::error($exception, $category);
}

            
off() public method

定义于: yii\base\Component::off()

从此组件中分离现有事件处理程序。

此方法与 on() 相反。

注意: 如果传递了通配符模式的事件名称,则只会删除使用此通配符注册的处理程序,而不会删除使用与该通配符匹配的普通名称注册的处理程序。

另请参阅 on()

public boolean off ( $name, $handler null )
$name string

事件名称

$handler callable|null

要移除的事件处理程序。如果为 null,则会移除附加到指定事件的所有处理程序。

返回 boolean

如果找到处理程序并将其分离

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() public method

定义于: yii\base\Component::on()

将事件处理程序附加到事件。

事件处理程序必须是一个有效的 PHP 回调函数。以下是一些例子

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

事件处理程序必须使用以下签名定义,

function ($event)

其中 $event 是一个 yii\base\Event 对象,其中包含与事件关联的参数。

从 2.0.14 开始,您可以将事件名称指定为通配符模式

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

另请参阅 off()

public void on ( $name, $handler, $data null, $append true )
$name string

事件名称

$handler callable

事件处理程序

$data 混合

在触发事件时传递给事件处理程序的数据。当调用事件处理程序时,可以访问此数据 yii\base\Event::$data

$append boolean

是否将新的事件处理程序附加到现有处理程序列表的末尾。如果为 false,则新处理程序将插入现有处理程序列表的开头。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
register() public method

定义于: yii\base\ErrorHandler::register()

注册此错误处理程序。

public void register ( )
版本 描述
2.0.32 如果错误处理程序已注册,则此操作将不执行任何操作

                public function register()
{
    if (!$this->_registered) {
        ini_set('display_errors', false);
        set_exception_handler([$this, 'handleException']);
        if (defined('HHVM_VERSION')) {
            set_error_handler([$this, 'handleHhvmError']);
        } else {
            set_error_handler([$this, 'handleError']);
        }
        if ($this->memoryReserveSize > 0) {
            $this->_memoryReserve = str_repeat('x', $this->memoryReserveSize);
        }
        // to restore working directory in shutdown handler
        if (PHP_SAPI !== 'cli') {
            $this->_workingDirectory = getcwd();
        }
        register_shutdown_function([$this, 'handleFatalError']);
        $this->_registered = true;
    }
}

            
renderCallStack() public method (available since version 2.0.12)

渲染调用堆栈。

public string renderCallStack ( $exception )
$exception Throwable

要获取调用堆栈的异常

返回 string

渲染的调用堆栈的 HTML 内容。

                public function renderCallStack($exception)
{
    $out = '<ul>';
    $out .= $this->renderCallStackItem($exception->getFile(), $exception->getLine(), null, null, [], 1);
    for ($i = 0, $trace = $exception->getTrace(), $length = count($trace); $i < $length; ++$i) {
        $file = !empty($trace[$i]['file']) ? $trace[$i]['file'] : null;
        $line = !empty($trace[$i]['line']) ? $trace[$i]['line'] : null;
        $class = !empty($trace[$i]['class']) ? $trace[$i]['class'] : null;
        $function = null;
        if (!empty($trace[$i]['function']) && $trace[$i]['function'] !== 'unknown') {
            $function = $trace[$i]['function'];
        }
        $args = !empty($trace[$i]['args']) ? $trace[$i]['args'] : [];
        $out .= $this->renderCallStackItem($file, $line, $class, $function, $args, $i + 2);
    }
    $out .= '</ul>';
    return $out;
}

            
renderCallStackItem() public method

渲染单个调用堆栈元素。

public string renderCallStackItem ( $file, $line, $class, $method, $args, $index )
$file string|null

调用发生的位置。

$line integer|null

调用发生的编号。

$class string|null

调用的类名称。

$method string|null

调用的函数/方法名称。

$args array

方法参数数组。

$index integer

调用堆栈元素的编号。

返回 string

渲染的调用堆栈元素的 HTML 内容。

                public function renderCallStackItem($file, $line, $class, $method, $args, $index)
{
    $lines = [];
    $begin = $end = 0;
    if ($file !== null && $line !== null) {
        $line--; // adjust line number from one-based to zero-based
        $lines = @file($file);
        if ($line < 0 || $lines === false || ($lineCount = count($lines)) < $line) {
            return '';
        }
        $half = (int) (($index === 1 ? $this->maxSourceLines : $this->maxTraceSourceLines) / 2);
        $begin = $line - $half > 0 ? $line - $half : 0;
        $end = $line + $half < $lineCount ? $line + $half : $lineCount - 1;
    }
    return $this->renderFile($this->callStackItemView, [
        'file' => $file,
        'line' => $line,
        'class' => $class,
        'method' => $method,
        'index' => $index,
        'lines' => $lines,
        'begin' => $begin,
        'end' => $end,
        'args' => $args,
    ]);
}

            
renderException() protected method

渲染异常。

protected void renderException ( $exception )
$exception Throwable

要渲染的异常。

                protected function renderException($exception)
{
    if (Yii::$app->has('response')) {
        $response = Yii::$app->getResponse();
        // reset parameters of response to avoid interference with partially created response data
        // in case the error occurred while sending the response.
        $response->isSent = false;
        $response->stream = null;
        $response->data = null;
        $response->content = null;
    } else {
        $response = new Response();
    }
    $response->setStatusCodeByException($exception);
    $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException);
    if ($useErrorView && $this->errorAction !== null) {
        Yii::$app->view->clear();
        $result = Yii::$app->runAction($this->errorAction);
        if ($result instanceof Response) {
            $response = $result;
        } else {
            $response->data = $result;
        }
    } elseif ($response->format === Response::FORMAT_HTML) {
        if ($this->shouldRenderSimpleHtml()) {
            // AJAX request
            $response->data = '<pre>' . $this->htmlEncode(static::convertExceptionToString($exception)) . '</pre>';
        } else {
            // if there is an error during error rendering it's useful to
            // display PHP error in debug mode instead of a blank screen
            if (YII_DEBUG) {
                ini_set('display_errors', 1);
            }
            $file = $useErrorView ? $this->errorView : $this->exceptionView;
            $response->data = $this->renderFile($file, [
                'exception' => $exception,
            ]);
        }
    } elseif ($response->format === Response::FORMAT_RAW) {
        $response->data = static::convertExceptionToString($exception);
    } else {
        $response->data = $this->convertExceptionToArray($exception);
    }
    $response->send();
}

            
renderFile() public method

将视图文件渲染为 PHP 脚本。

public string renderFile ( $_file_, $_params_ )
$_file_ string

视图文件。

$_params_ array

将被提取并提供给视图文件的参数(名称-值对)。

返回 string

渲染结果

                public function renderFile($_file_, $_params_)
{
    $_params_['handler'] = $this;
    if ($this->exception instanceof ErrorException || !Yii::$app->has('view')) {
        ob_start();
        ob_implicit_flush(false);
        extract($_params_, EXTR_OVERWRITE);
        require Yii::getAlias($_file_);
        return ob_get_clean();
    }
    $view = Yii::$app->getView();
    $view->clear();
    return $view->renderFile($_file_, $_params_, $this);
}

            
renderPreviousExceptions() public method

渲染给定异常的先前异常堆栈。

公共 字符串 renderPreviousExceptions ( $exception )
$exception Throwable

应渲染的前驱异常。

返回 string

渲染的前驱异常的 HTML 内容。如果没有前驱异常,则为空字符串。

                public function renderPreviousExceptions($exception)
{
    if (($previous = $exception->getPrevious()) !== null) {
        return $this->renderFile($this->previousExceptionView, ['exception' => $previous]);
    }
    return '';
}

            
renderRequest() 公共方法

渲染请求的全局变量。

全局变量列表在 $displayVars 中定义。

另请参阅 $displayVars

公共 字符串 renderRequest ( )
返回 string

渲染结果

                public function renderRequest()
{
    $request = '';
    foreach ($this->displayVars as $name) {
        if (!empty($GLOBALS[$name])) {
            $request .= '$' . $name . ' = ' . VarDumper::export($GLOBALS[$name]) . ";\n\n";
        }
    }
    return '<pre>' . $this->htmlEncode(rtrim($request, "\n")) . '</pre>';
}

            
shouldRenderSimpleHtml() 受保护的方法 (自 2.0.12 版本起可用)

受保护 布尔值 shouldRenderSimpleHtml ( )
返回 boolean

如果应渲染简单的 HTML

                protected function shouldRenderSimpleHtml()
{
    return YII_ENV_TEST || Yii::$app->request->getIsAjax();
}

            
trigger() 公共方法

定义于: yii\base\Component::trigger()

触发事件。

此方法表示事件的发生。它调用事件的所有附加处理程序,包括类级别的处理程序。

公共 void trigger ( $name, yii\base\Event $event null )
$name string

事件名称

$event yii\base\Event|null

事件实例。如果未设置,则将创建一个默认的 yii\base\Event 对象。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
unregister() 公共方法

定义于: yii\base\ErrorHandler::unregister()

通过恢复 PHP 错误和异常处理程序来取消注册此错误处理程序。

公共 void unregister ( )
版本 描述
2.0.32 如果未注册错误处理程序,则此操作不会执行任何操作。

                public function unregister()
{
    if ($this->_registered) {
        $this->_memoryReserve = null;
        $this->_workingDirectory = null;
        restore_error_handler();
        restore_exception_handler();
        $this->_registered = false;
    }
}