示例仓库
Github仓库
什么是 Optional
先让我们看一段 NodeJS
的代码
var obj = null;
console.log(obj?.id);
上述代码会输出 undefined
,如果去掉中间的 ?
,则会抛出一个 TypeError
console.log(obj.id);
^
TypeError: Cannot read property 'id' of null
而 Optional
就是 PHP
中的一个封装
Laravel 中的实现
我们可以直接在 Laravel
框架中执行以下代码
<?php
dump(optional(null)->id);
会输出 null
但当我们仔细看一下源码,其实实现是有坑的,按照正常的设计我们编写以下代