Example #1
0
 /**
  * Return string representation of parameter
  *
  * @param Parameter|ParsedParameter $parameter Reflection parameter
  *
  * @return string
  */
 protected function getParameterCode($parameter)
 {
     $type = '';
     if ($parameter->isArray()) {
         $type = 'array';
     } elseif ($parameter->getClass()) {
         $type = '\\' . $parameter->getClass()->name;
     }
     $defaultValue = null;
     $isDefaultValueAvailable = $parameter->isDefaultValueAvailable();
     if ($isDefaultValueAvailable) {
         if ($parameter instanceof ParsedParameter) {
             $defaultValue = $parameter->getDefaultValueDefinition();
         } else {
             $defaultValue = var_export($parameter->getDefaultValue());
         }
     } elseif ($parameter->isOptional()) {
         $defaultValue = 'null';
     }
     $code = ($type ? "{$type} " : '') . ($parameter->isPassedByReference() ? '&' : '') . ($this->useVariadics && $parameter->isVariadic() ? '...' : '') . '$' . $parameter->name . ($defaultValue !== null ? " = " . $defaultValue : '');
     return $code;
 }
 /**
  * Tests export.
  */
 public function testToString()
 {
     $tests = array('declaringFunction', 'reference', 'noReference', 'class', 'noClass', 'array', 'noArray', 'nullClass', 'noNullClass', 'nullArray', 'noNullArray', 'noOptional', 'optionalNull', 'optionalTrue', 'optionalFalse', 'optionalArray', 'optionalString', 'optionalInteger', 'optionalFloat', 'optionalConstant');
     foreach ($tests as $test) {
         $rfl = $this->getParameterReflection($test);
         $this->assertSame($rfl->internal->__toString(), $rfl->token->__toString());
         $this->assertSame(InternalReflectionParameter::export($this->getFunctionName($test), 0, true), ReflectionParameter::export($this->getBroker(), $this->getFunctionName($test), 0, true));
         // Test loading from a string
         $rfl = $this->getParameterReflection($test, true);
         $this->assertSame($rfl->internal->__toString(), $rfl->token->__toString());
     }
     $this->assertSame(InternalReflectionParameter::export('strpos', 0, true), ReflectionParameter::export($this->getBroker(), 'strpos', 0, true));
 }