__invoke() Magic Method in PHP

There are various magic methods that will make our work easier in PHP. Magic methods begin with two underscores(__construct, __invoke). In this post, I will explain the __invoke() magic method and its usage, which is frequently used in PHP.

__invoke() :

The __invoke is a method that we define in the class. If we call the object as a function after instantiating an object from the class, the method to be called is the __invoke() method.

Example:

First we will define a class named Car.

class Car{

    public function __construct(){
        echo "object created <br>";
    }

    public function __invoke(){
        echo "invoke method called";
    }
}

Let’s create an object of this class. When we create an object, the __construct method will run. If we then call the object as a function, the __invoke method will run.

$obj = new Car();

$obj();

//Output: object created 
//Output: invoke method called 

We can check whether the object is callable with the is_callable() function before calling it.

echo is_callable($obj) ? 'yes' : 'no';
//Output : yes 

Callable Typehint

The callable typehint checks whether the thing being called is callable or not so that it is executed. It came with PHP 5.4. Below you will see a usage of how to use the __invoke magic method.

function start_engine(Callable $func) {
    $func();
    return "engine started";
  }

$obj = new Car();

echo start_engine($obj);
//Output: object created 
//Output: invoke method called
//Output: engine started

Good Luck …