aviator/delegate

1.0 2017-10-11 21:31 UTC

This package is auto-updated.

Last update: 2020-02-20 23:58:06 UTC


README

Build Status

Overview

Delegate is a simple way to make property calls chainable when they otherwise wouldn't be.

Installation

Via Composer:

composer require aviator/delegate

Testing

Via Composer:

composer test

Usage

Use a magic __get to set up a delegate:

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

which will return the delegate when $instance->foo is called.

Since Delegate accepts anything as its first parameter and a Closure as its second, you can do anything:

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

This allows you to call $instance->foo->bar, which will call your function against someMember.