辅助方法 optional 的实现
在访问对象属性时,如果没有判断,经常会出现「未定义属性的错误」
<?php
$user = User::find(1000000); // 获取一个不存在的用户
$user->name; // Trying to get property 'name' of non-object使用 Laravel 提供的  optional  函数则不会出现该错误
<?php
optional($user)->name; // null下面我们来简单实现该功能。
定义类
<?php
namespace App\Support;
class Optional
{
    protected $value;
    /**
     * Optional constructor.
     *
     * @param $value
     */
    public function __construct($value)
    {
        $this->value = $value;
    }
    public function __get($key)
    {
        if(is_object($this->value)){
            return $this->value->{$key} ?? null;
        }
    }
    public function __isset($key)
    {
        if(is_object($this->value)){
            return isset($this->value->{$key});
        }
        return false;
    }
}
测试
<?php
use App\Support\Optional;
$user = User::find(1000000);
$optional = new Optional($user);
$optional->name; // null
isset($optional->name); // false封装成函数
<?php
function custom_optional($value)
{
  return new \App\Support\Optional($value);
}
custom_optional($user)->name; // null 
           Laravel 学习指南
Laravel 学习指南 
         
                     
                     
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: