aviator/delegate

1.0 2017-10-11 21:31 UTC

This package is auto-updated.

Last update: 2024-09-21 20:33:59 UTC


README

Build Status

概述

Delegate 是一种简单的方法,在属性调用本不应链式调用时使其能够链式调用。

安装

通过 Composer

composer require aviator/delegate

测试

通过 Composer

composer test

使用方法

使用魔法函数 __get 来设置代理

public function __get ($name)
{
    if ($name === 'foo') {
        return $this->getFooDelegate()
    }
}

当调用 $instance->foo 时,它将返回代理。

由于 Delegate 接受任何作为其第一个参数,接受闭包作为第二个参数,所以你可以做任何事

private function getFooDelegate ()
{
    return new Delegate($this->someMember, function ($collection, $name) {
        return $collection->get($name);
    }
}

这允许你调用 $instance->foo->bar,这将调用你的函数针对 someMember