Esempio n. 1
0
 /**
  * @param $obj
  * @param $method
  * @param $params
  * @return mixed
  */
 protected function injectLanguageIntoMethodParameters(Language $language, $obj, $method, $params)
 {
     $position_of_language_parameter = Utilities::getPositionsOfParameterWithTypeHint($obj, $method, 'JK\\RestServer\\Language');
     if (count($position_of_language_parameter) > 0) {
         foreach ($position_of_language_parameter as $var_name => $position) {
             $params[$var_name] = $language;
             if (isset($params[$position])) {
                 unset($params[$position]);
             }
         }
         return $params;
     }
     return $params;
 }
Esempio n. 2
0
 public function testGetPositionsOfParameterWithTypeHint()
 {
     $test_class = new TestClass();
     $result = Utilities::getPositionsOfParameterWithTypeHint($test_class, 'method', 'stdClass');
     $this->assertInternalType('array', $result);
     $this->assertArrayHasKey('param2', $result);
     $this->assertEquals(1, $result['param2']);
 }
Esempio n. 3
0
 /**
  * @param object $obj Class object
  * @param string $method Class method
  * @param string $type_hint_class Class name of the type hint
  * @return array Position of parameters of type $type_hint_class
  */
 public static function getPositionsOfParameterWithTypeHint($obj, $method, $type_hint_class)
 {
     $reflection_class = Utilities::reflectionClassFromObjectOrClass($obj);
     $reflection_method = $reflection_class->getMethod($method);
     $reflection_parameters = $reflection_method->getParameters();
     $positions = array();
     /** @var ReflectionParameter $parameter */
     foreach ($reflection_parameters as $parameter) {
         $type_hint = '';
         if (isset($parameter->getClass()->name)) {
             $type_hint = $parameter->getClass()->name;
         }
         if ($type_hint == $type_hint_class) {
             $positions[$parameter->name] = $parameter->getPosition();
         }
     }
     return $positions;
 }