我只是在方法类型提示中使用问号的PHP(symfony/laravel)代码感觉:
public function functionName(?int $arg = 0)
Run Code Online (Sandbox Code Playgroud)
在其他情况下,?类型不是最后一个,但我没有找到任何没有默认的类型.
问题是,我找不到任何关于此的信息,我查了一下:
和7.2一样,但由于代码只需要7.1,所以看起来很正常.
我也用谷歌搜索,并在这里搜索,但要么这没有记录或问号主题是打败搜索引擎.
所以我现在觉得有点愚蠢,如果有人能够在方法签名参数中对这个问号的含义进行启发,我真的很感激.
谢谢
使用laravel 5.5,我们可以访问configureMonologUsing()$ app中的方法,这样就可以在bootstrap/app.php中实现这样的功能:
$app->configureMonologUsing(function (Monolog\Logger $monolog) {
$processUser = posix_getpwuid(posix_geteuid());
$processName= $processUser['name'];
$filename = storage_path('logs/laravel-' . php_sapi_name() . '-' . $processName . '.log');
$handler = new Monolog\Handler\RotatingFileHandler($filename);
$monolog->pushHandler($handler);
});
Run Code Online (Sandbox Code Playgroud)
当您的应用程序可以从具有不同用户(需要)和文件轮换的不同上下文(例如CLI/HTTP)调用时,执行此操作非常有用.执行此操作可防止在HTTP用户创建日志文件之前写入错误,然后CLI会尝试在其中添加内容,反之亦然.
处理这个是非常棘手或不安全的,因为它涉及能够在可能尚不存在的文件上设置写权限.
另外,通过上下文分隔日志非常方便,因为它们通常没什么共同之处,因此可以更容易地在它们之间进行搜索.
不幸的是,使用laravel 5.6不再可能采用这种方式,而且我还没有找到一种方法来透明地执行所有基于文件的日志记录.
谢谢