Jonathon Posted March 28, 2015 Share Posted March 28, 2015 Hi Larry In any of your PHP writings do you have anything on closures. I feel like you do in the JavaScript book. I'll have to have a look, but just wondering could you with your expert ability to explain things explain a closure. Thanks Jonathon Link to comment Share on other sites More sharing options...
Antonio Conte Posted March 29, 2015 Share Posted March 29, 2015 Just like an array is traversable a closure is callable. The traversable part is why you can foreach an array, as foreach expects something implementing Traversable. You can actually implement Traversable directly on any object and foreach it directly. The same principle applies to anonymous functions. It's just another type of structure PHP provides you with. Functions in PHP normally provides you encapsulation and execution of a set of logic. A closure is a reference to a function's definition, and behaves more like objects in PHP. When you have a closure, you can do stuff to it, just like you would an object. // A reference to a callable function $callable = function($text) { echo $text; }; // Perform an operation with a callable $callable("I'm running now, guys!"); // Output happens here call_user_func() and usort() are some of the functions that expects a callable. usort is probably the easiest to get. // Define a normaly compare function function compare($a, $ { if ($a == $ { return 0; } return ($a < $ ? -1 : 1; } // Use the function normally var_dump(compare(1, 1)); // Returns 0, they are equal // Define an array to sort $values = array(3, 1, 2); // Sort the array using the "compare" function. This probably used call_user_func() // behind the scene to get a callable. usort($values, "compare"); // So, let's do that directly instead usort($values, function ($a, $ { if ($a == $ { return 0; } return ($a < $ ? -1 : 1; }); Hope that helps. Link to comment Share on other sites More sharing options...
Jonathon Posted March 29, 2015 Author Share Posted March 29, 2015 Thanks Thomas Link to comment Share on other sites More sharing options...
Recommended Posts