Lets create a class called Test

class Test{
    public function testfunction(){
        return 'testfunctioning';
    }
    public function test2()
    {
        return 'testing2';
    }
}

And bind the class .

app()->bind('Test',function (){
    return new Test();
});

Create a new TestFacade class.

class TestFacade
{
    public static function __callStatic($name,$args){
        //app()->make and resolve are same
        //  return app()->make('fish')->$name();
        return resolve('test')->$name();
    }
}
dd(TestFacade::testfunction());

This will return

Testfunctioning

So what we are doing here?

First, we constructed a standard class. The class is then bound in Container. However, binding is not required because Laravel will bind it automatically. Then, in the TestFacade class, we create a magic method called __callStatic, where $name is the function and $args is an array of arguments. The method is then resolved and returned.

__callStatic:: When you call a static method that does not exist on the class, PHP automatically runs the __callStatic () magic function to construct that method as static.

 

By Navid Anjum

Full-stack web developer and founder of Laravelaura. He makes his tutorials as simple as humanly possible and focuses on getting the students to the point where they can build projects independently. https://github.com/NavidAnjum

Leave a Reply

Your email address will not be published. Required fields are marked *