Neos\Flow\ObjectManagement\Proxy\Compiler::renderAnnotation PHP Метод

renderAnnotation() публичный статический Метод

Render the source (string) form of an Annotation instance.
public static renderAnnotation ( Doctrine\Common\Annotations\Annotation $annotation ) : string
$annotation Doctrine\Common\Annotations\Annotation
Результат string
    public static function renderAnnotation($annotation)
    {
        $annotationAsString = '@\\' . get_class($annotation);
        $optionNames = get_class_vars(get_class($annotation));
        $optionsAsStrings = [];
        foreach ($optionNames as $optionName => $optionDefault) {
            $optionValue = $annotation->{$optionName};
            $optionValueAsString = '';
            if (is_object($optionValue)) {
                $optionValueAsString = self::renderAnnotation($optionValue);
            } elseif (is_scalar($optionValue) && is_string($optionValue)) {
                $optionValueAsString = '"' . $optionValue . '"';
            } elseif (is_bool($optionValue)) {
                $optionValueAsString = $optionValue ? 'true' : 'false';
            } elseif (is_scalar($optionValue)) {
                $optionValueAsString = $optionValue;
            } elseif (is_array($optionValue)) {
                $optionValueAsString = self::renderOptionArrayValueAsString($optionValue);
            }
            switch ($optionName) {
                case 'value':
                    $optionsAsStrings[] = $optionValueAsString;
                    break;
                default:
                    if ($optionValue === $optionDefault) {
                        continue;
                    }
                    $optionsAsStrings[] = $optionName . '=' . $optionValueAsString;
            }
        }
        return $annotationAsString . ($optionsAsStrings !== [] ? '(' . implode(', ', $optionsAsStrings) . ')' : '');
    }

Usage Example

 /**
  * @dataProvider annotationsAndStrings
  * @test
  */
 public function renderAnnotationRendersCorrectly($annotation, $expectedString)
 {
     $this->assertEquals($expectedString, Compiler::renderAnnotation($annotation));
 }
All Usage Examples Of Neos\Flow\ObjectManagement\Proxy\Compiler::renderAnnotation