phpfluent/callback

Allows you execute callbacks in a more dynamic way

1.1.0 2015-06-03 19:24 UTC

README

Build Status Code Quality Code Coverage Latest Version Total Downloads License

Allows you execute callbacks in a more dynamic way.

Installation

The package is available on Packagist. You can install it using Composer.

composer require phpfluent/callback

Dependencies

  • PHP 5.4+

Usage

All examples within this document assume you have the following statement at the beginning of the file:

use PHPFluent\Callback\Callback;

Define your callable

Closures

$callback = new Callback(
    function () {
        // My callable content.
    }
);

Object methods

$callback = new Callback(array($object, 'methodName'));

User defined functions

$callback = new Callback('my_function');

PHP native functions

$callback = new Callback('str_replace');

Executing your callable

There are many ways you can execute the callable.

invoke()

$callback->invoke($arg1, $arg2, $arg3);

invokeArguments()

$callback->invokeArguments($arrayArguments);

__invoke()

$callback($arg1, $arg2, $arg3); // call_user_func() and call_user_func_array() will work like a charm

Arguments

If you're reading this document you may be wondering why this library was written since everything written on it is already possible just using native PHP features.

This library provides more flexibility when defining the arguments to be used when you call your callback. That's useful when you working with callbacks in a predefined structure but you don't want all arguments.

Names

Callback will execute your callback based on its parameters name.

$callable = new Callback(
    function ($foo, $bar = true) {
        // My callable body
    }
);
$callable->invokeArguments(
    array(
        'foo' => 'PHPFluent',
    )
);

Types

Doesn't matter the order of the arguments, Callback will put it in the right order before execute your callable.

$callable = new Callback(
    function (array $array, TypeTwo $typeTwo, $string, $int, TypeThree $typeThree, $optional = 42) {
        // My callable body
    }
);
$callable(array(), new TypeTwo(), new TypeThree(), 'string', 123);