Example #1
0
 /**
  * @param ArrayAccess $services
  * @param CallableReflection $callbackReflection
  * @return array
  */
 private function prepareArgs(ArrayAccess $services, CallableReflection $callbackReflection)
 {
     $args = array('args' => $this->getMatches(), 'services' => $services);
     foreach ($callbackReflection->getReflector()->getParameters() as $reflectionParameter) {
         if ($services->offsetExists($reflectionParameter->getName())) {
             $args[$reflectionParameter->getName()] = $services[$reflectionParameter->getName()];
         }
     }
     return $args;
 }
Example #2
0
 /**
  * @param callable $filter
  * @return mixed
  */
 private function callFilter(callable $filter)
 {
     $callbackReflection = new CallableReflection($filter);
     return $callbackReflection->invokeA($this->castServices($callbackReflection->getReflector()->getParameters()));
 }
 public function testGetObjectForInvokedObject()
 {
     $reflectedCallable = new CallableReflection($this->getInvokedObject());
     $this->assertInstanceOf('TRex\\Reflection\\resources\\Callback', $reflectedCallable->getObject());
 }
Example #4
0
 private function getCallableTypeHints(callable $action)
 {
     $reflector = new CallableReflection($action);
     $method = $reflector->getReflector();
     $params = $method->getParameters();
     $mapped = [];
     foreach ($params as $param) {
         if ($param->getClass() !== null) {
             $mapped[$param->getName()] = ['name' => $param->getClass()->getName(), 'optional' => $param->isOptional()];
         }
     }
     return $mapped;
 }
Example #5
0
File: Phi.php Project: bapcat/phi
 /**
  * Executes a callable using dependency injection
  * 
  * @param  callable  $call       A callable to execute using dependency injection
  * @param  mixed[]   $arguments  The arguments to pass to the callable
  * 
  * @return mixed     The return value of the callable
  */
 public function call(callable $call, array $arguments = [])
 {
     $reflector = new CallableReflection($call);
     $method = $reflector->getReflector();
     $values = $this->buildArguments($method, $arguments);
     //TODO Workaround for PHP5...
     if ($reflector->isStaticMethod()) {
         return $reflector->invokeArgsStatic($values);
     }
     return $call(...$values);
 }