Invokables in PHP are classes that you can use as a function. They have been around since PHP 5.3 and have many interesting use cases. Here's a quick example.

class Invokable
{
	public function __invoke()
	{
		echo 'I have been invoked';
	}
}

You can use it like this:

// outputs 'I have been invoked'
$invokable();

Nice! Now let's use an invokable as an instance variable. Consider this code where we define a new class which has an invokable as an instance variable:

class Foo
{
	/** \Invokable */
	protected $invokable;

	public function __construct(Invokable $invokable)
	{
	   $this->invokable = $invokable;
	}

	public function callInvokable()
	{
		// let's implement this
	}
}

Let's see how we could implement that callInvokable function. Your first hunch could be to do this:

public function callInvokable()
{
   $this->invokable();
}

This will blow up because this code tries to call a non-existing function called invokable function on Foo.

To do it right you have three options:

public function callInvokable()
{
	// first option: nice
    call_user_func($this->invokable);
		
	// second option: ok too
	$this->invokable->__invoke();

    // third option (only avaible for PHP 7): 😍
	($this->invokable)();
}