fork download
  1. <?php
  2.  
  3. function array_magic(callable $function, array &$array, array $additional = array())
  4. {
  5. $function($array + $additional);
  6. }
  7.  
  8. test('array_key_exists');
  9. test('array_walk');
  10. test('array_magic');
  11.  
  12. function test($funcName)
  13. {
  14. $funcRefl = new ReflectionFunction($funcName);
  15. echo $funcName . PHP_EOL;
  16. foreach ($funcRefl->getParameters() as $paramRefl) {
  17. echo ' ' . $paramRefl->getName() . PHP_EOL;
  18. echo ' isPassedByReference: ' . var_export($paramRefl->isPassedByReference(), true) . PHP_EOL;
  19. echo ' isOptional: ' . var_export($paramRefl->isOptional(), true) . PHP_EOL;
  20. echo ' isArray: ' . var_export($paramRefl->isArray(), true) . PHP_EOL;
  21. echo ' isCallable: ' . var_export($paramRefl->isCallable(), true) . PHP_EOL;
  22. }
  23. echo PHP_EOL;
  24. }
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
array_key_exists
  key
    isPassedByReference: false
    isOptional:          false
    isArray:             false
    isCallable:          false
  search
    isPassedByReference: false
    isOptional:          false
    isArray:             false
    isCallable:          false

array_walk
  input
    isPassedByReference: true
    isOptional:          false
    isArray:             false
    isCallable:          false
  funcname
    isPassedByReference: false
    isOptional:          false
    isArray:             false
    isCallable:          false
  userdata
    isPassedByReference: false
    isOptional:          true
    isArray:             false
    isCallable:          false

array_magic
  function
    isPassedByReference: false
    isOptional:          false
    isArray:             false
    isCallable:          true
  array
    isPassedByReference: true
    isOptional:          false
    isArray:             true
    isCallable:          false
  additional
    isPassedByReference: false
    isOptional:          true
    isArray:             true
    isCallable:          false