Case
I am playing around on a laravel project to see if i can use closures for my implementation of a sorting interface, and i noticed that when i dd() my closure, it also shows the class in which the closure was created as a property.
Minimised Code
// in my Order model class, i have a function that will return a closure public static function defaultSortFunction(){ $sortColumn = property_exists(self::class,'defaultSortingColumn') ? self::$defaultSortingColumn : 'created_at'; return function($p,$n)use($sortColumn){ return $p->$sortColumn <=> $n->$sortColumn; }; } // in one of my controller I use for testing, I added these 2 methods for testing public function index(){ $sortFunction = Order::defaultSortFunction(); $this->someOtherFunction($sortFunction); return 'done'; } private function someOtherFunction($fn){ dd($fn); // $scopeModel = get_class($fn); => Closure // example of how I can use this value later // $scopeModel::take(10)->get()->sort($fn); } The result of the dd() inside someOtherFunction():
^ Closure($p, $n) {#1308 ▼ class: "App\Order" use: {▼ $sortColumn: "created_at" } } Question
From the result of the dd() it shows that the closure has a property that shows that it was defined in the class App\Order. Is there any way to access this value?
I have tried get_class($fn) but as expected it gives "Closure", and if i did $fn->class it gives an error saying Closure object cannot have properties.