我在我的应用程序中使用Monolog作为独立库,最近我遇到了一个问题.让我们说,在我的应用程序的某个时刻,我捕获一个异常,我想记录它:
$mylogger->error('Exception caught', array('exception' => $exception));
Run Code Online (Sandbox Code Playgroud)
除了一件小事之外,它的工作方式非常完美 - 它不记录整个堆栈跟踪.是否可以使用monolog内置格式化程序记录异常的完整堆栈跟踪?
最近我正在阅读php文档,并在字符串部分找到了有趣的注释:
自PHP 5起,{$}内的函数,方法调用,静态类变量和类常量工作.但是,访问的值将被解释为定义字符串的作用域中变量的名称.使用单个花括号({})将无法访问函数或方法的返回值或类常量或静态类变量的值.
见www.php.net/manual/en/language.types.string.php
它说,我不能使用卷曲语法来获取object的方法调用返回的值.这是手动错误还是我误解了它,因为我尝试了下面的代码,它运行得很好:
<?php
class HelloWorld
{
public static function hello()
{
echo 'hello';
}
}
$a = new HelloWorld();
echo "{$a->hello()} world";
Run Code Online (Sandbox Code Playgroud) 目前我正在阅读有关回调函数的 php 手册,并发现了有趣的注释:
如果在先前的回调中抛出未捕获的异常,则不会调用使用call_user_func() 和 call_user_func_array() 等函数注册的回调。
很明显,脚本运行会在未捕获异常的情况下被中断。那么,为什么php手册的作者还要写关于call_user_func的呢?还是我误解了声明?