phpslim-3

this keyword inside slim framework closure


recently i started to learn API in PHP, i start to learning basic stuffs related to API then i decided to learn a framework and i choose slim microframework so i was reading the Dependency Container documentation and i saw this example

$app->get('/foo', function ($req, $res, $args) {
$myService = $this->get('myService');

return $res;

});

here this keyword refers to Container object so i want to know how it is possible to refer an object with this keyword in PHP closure?


Solution

  • after couple of hours searching i got my answer so i want to share it

    class A{
    private $privateData = 2;
    
    public function get($func){
        $c=Closure::bind($func,$this,"A");
        $c();
    }
    
    public function getPrivateData(){
        return $this->privateData;
     }
    }
    
    
    $a=new A();
    $a->get(function (){
        var_dump($this->getPrivateData());
    });
    

    https://codesamplez.com/programming/php-closure-tutorial