top | item 14731963 (no title) babyrainbow | 8 years ago >For any line of python, there's a line or two of PHP to accomplish the same thing (same with javascript).Python decorators? What is the counterpart of that in Php? discuss order hn newest alexandercrohde|8 years ago The syntactic-sugar form isn't there with the @, but it can still be done in a single line.https://coderpad.io/RWTYEFY3<?php// DEFINE DECORATOR$decoratorFunction = function($orig) { print "decorating $orig"; return function() use ($orig) { $params = func_get_args(); print "\nCalling a function with: " . count($params) . " arguments"; return call_user_func_array($orig, $params); }; };// DEFINE A FUNCTION TO DECORATEfunction someFunction($a, $b) { return $a + $b; }// CREATE NEW DECORATED FUNCTION(s)$decorated = $decoratorFunction("someFunction");$decorated2 = $decoratorFunction("printf");echo "\noutput: " . $decorated(1,2);echo "\nOutput: " . $decorated2("\n%s", "cool"); } babyrainbow|8 years ago >The syntactic-sugar form isn't there with the @..But those things are differences, right? Certain languages makes certain things easy and idiomatic. The differences in languages are all about that... load replies (1)
alexandercrohde|8 years ago The syntactic-sugar form isn't there with the @, but it can still be done in a single line.https://coderpad.io/RWTYEFY3<?php// DEFINE DECORATOR$decoratorFunction = function($orig) { print "decorating $orig"; return function() use ($orig) { $params = func_get_args(); print "\nCalling a function with: " . count($params) . " arguments"; return call_user_func_array($orig, $params); }; };// DEFINE A FUNCTION TO DECORATEfunction someFunction($a, $b) { return $a + $b; }// CREATE NEW DECORATED FUNCTION(s)$decorated = $decoratorFunction("someFunction");$decorated2 = $decoratorFunction("printf");echo "\noutput: " . $decorated(1,2);echo "\nOutput: " . $decorated2("\n%s", "cool"); } babyrainbow|8 years ago >The syntactic-sugar form isn't there with the @..But those things are differences, right? Certain languages makes certain things easy and idiomatic. The differences in languages are all about that... load replies (1)
babyrainbow|8 years ago >The syntactic-sugar form isn't there with the @..But those things are differences, right? Certain languages makes certain things easy and idiomatic. The differences in languages are all about that... load replies (1)
alexandercrohde|8 years ago
https://coderpad.io/RWTYEFY3
<?php
// DEFINE DECORATOR
$decoratorFunction = function($orig) { print "decorating $orig"; return function() use ($orig) { $params = func_get_args(); print "\nCalling a function with: " . count($params) . " arguments"; return call_user_func_array($orig, $params); }; };
// DEFINE A FUNCTION TO DECORATE
function someFunction($a, $b) { return $a + $b; }
// CREATE NEW DECORATED FUNCTION(s)
$decorated = $decoratorFunction("someFunction");
$decorated2 = $decoratorFunction("printf");
echo "\noutput: " . $decorated(1,2);
echo "\nOutput: " . $decorated2("\n%s", "cool"); }
babyrainbow|8 years ago
But those things are differences, right? Certain languages makes certain things easy and idiomatic. The differences in languages are all about that...