adhocore/get-in

该包已废弃,不再维护。没有建议的替代包。

具有错误陷阱和默认值的链式对象的便捷遍历(适用于视图)。

dev-master / 1.0.x-dev 2018-08-05 09:40 UTC

This package is auto-updated.

Last update: 2022-10-01 08:01:56 UTC


README

这防止了PHP错误 "在非对象上调用成员函数" 并提供了优雅的语法来以流畅的方式访问链式对象的方法,并且如果它在任何点上失败,还提供了默认值

原理和用法

例如

echo $user->getGroup()->getPermission()->getName();

这种情况在任何ORM中都很常见。现在,如果 $usernull$user->getGroup()null 或等,那么将会有很多检查,比如

$default = 'some name';
if ($user) {
    $group = $user->getGroup();
    if ($group) {
        $permission = $group->getPermission();
        if ($permission){
            echo $permission->getName();
        } else {
            echo $default;
        }
    } else {
        echo $default;
    }
} else {
    echo $default;
}

或者可以以一种更简洁的方式实现,比如

$default = 'some name';
if ($user and 
    $group = $user->getGroup() and 
    $permission = $group->getPermission()
) {
    echo $permission->getName();
} else {
    echo $default;
}

仍然不完美。 adhocore/get-in 通过提供方便的包装器来避免这种痛苦

echo \Ahc\Get::in($user, 'getGroup.getPermission.getName', 'some name');

安装

编辑你的 composer.json,在 require 部分包含 "adhocore/get-in": "1.0.*@dev" 并运行 composer update

优势

  • 防止多层级检查
  • 防止出现 "在非对象上调用成员函数" 等错误
  • 避免在检查过程中创建临时变量
  • 提供在失败时具有默认值的方法

名称

名称get-in基于 igorw/get-in,它是用于数组操作的类似东西,而 adhocore/get-in 是用于链式对象