Ejemplo n.º 1
0
 /**
  * @param $annotation_name string
  * @param $multiple        boolean
  * @return Annotation|Annotation[] depending on $multiple value
  */
 private function getCachedAnnotation($annotation_name, $multiple)
 {
     if (isset($this->annotations[$annotation_name])) {
         return $this->annotations[$annotation_name];
     }
     $path = $this->getAnnotationCachePath();
     if (isset($path)) {
         if (!isset(self::$annotations_cache[$path[0]][$path[1]][$annotation_name][$multiple]) && $this instanceof Has_Doc_Comment) {
             /** @var $this Annoted|Has_Doc_Comment */
             self::$annotations_cache[$path[0]][$path[1]][$annotation_name][$multiple] = Parser::byName($this, $annotation_name, $multiple);
         }
         return self::$annotations_cache[$path[0]][$path[1]][$annotation_name][$multiple];
     } else {
         /** @var $this Annoted|Has_Doc_Comment */
         return Parser::byName($this, $annotation_name, $multiple);
     }
 }
Ejemplo n.º 2
0
<?php

namespace SAF\Framework\Reflection\Annotation;

use SAF\Framework\Reflection\Annotation\Template\Boolean_Annotation;
use SAF\Framework\Reflection\Annotation\Template\Documented_Type_Annotation;
use SAF\Framework\Reflection\Annotation\Template\List_Annotation;
use SAF\Framework\Reflection\Annotation;
use SAF\Framework\Reflection\Annotation\Template\Method_Annotation;
//-------------------------------------------------------------------- Parser::$default_annotations
/**
 * Known annotations that do not need a specific class
 */
Parser::$default_annotations = [__NAMESPACE__ . '\\Class_\\After_Read_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\After_Transform_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\After_Write_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\Before_Build_Array_Annotation' => Annotation::class, __NAMESPACE__ . '\\Class_\\Before_Delete_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\Before_Write_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\Business_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Class_\\Deprecated_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Class_\\Duplicate_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\On_Data_List_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Class_\\Stored_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Method\\Advice_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Method\\Deprecated_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Method\\Return_Annotation' => Documented_Type_Annotation::class, __NAMESPACE__ . '\\Property\\Binary_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Block_Annotation' => List_Annotation::class, __NAMESPACE__ . '\\Property\\Calculated_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Component_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Composite_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Conditions_Annotation' => List_Annotation::class, __NAMESPACE__ . '\\Property\\Dao_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Default_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Property\\Deprecated_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Filters_Annotation' => List_Annotation::class, __NAMESPACE__ . '\\Property\\Length_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Mandatory_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Max_Length_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Max_Value_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Min_Length_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Min_Value_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Multiline_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Output_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Override_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Precision_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Read_Only_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Replace_Filter_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Replaces_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Setter_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Property\\Signed_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\Store_Annotation' => Annotation::class, __NAMESPACE__ . '\\Property\\Textile_Annotation' => Boolean_Annotation::class, __NAMESPACE__ . '\\Property\\User_Change_Annotation' => Method_Annotation::class, __NAMESPACE__ . '\\Property\\User_Getter_Annotation' => Annotation::class];