/**
  * Tries to get the name of an action (edit, delete, list, new, save) for a given object-type.
  * Example: Converts list to listOtherObject for the object class_module_demo_demo if the annotation
  *          @ objectListOtherObject class_module_demo_demo is declared
  *
  * @param string $strAction
  * @param $objInstance
  *
  * @return string
  */
 protected function getActionNameForClass($strAction, $objInstance)
 {
     if (isset(self::$arrActionNameMapping[$strAction])) {
         $strAnnotationPrefix = self::$arrActionNameMapping[$strAction];
         if ($strAction == "new") {
             return $strAction . $this->getStrCurObjectTypeName();
         } else {
             $objReflection = new class_reflection($this);
             $arrAnnotations = $objReflection->getAnnotationsWithValueFromClass(get_class($objInstance));
             foreach ($arrAnnotations as $strProperty) {
                 if (uniStrpos($strProperty, $strAnnotationPrefix) === 0) {
                     return $strAction . uniSubstr($strProperty, uniStrlen($strAnnotationPrefix));
                 }
             }
         }
     }
     return parent::getActionNameForClass($strAction, $objInstance);
 }
Esempio n. 2
0
 /**
  * Returns a list of all annotation names with a given value.
  * 
  * @param string $strValue Annotation value
  * @param class_reflection_enum $objEnum - whether to return annotation values or parameters, default is values
  * @return array List of annotation names
  */
 public function getAnnotationsWithValueFromClass($strValue, class_reflection_enum $objEnum = null)
 {
     if ($objEnum == null) {
         $objEnum = class_reflection_enum::VALUES();
     }
     $arrReturn = array();
     $strClassDoc = $this->objReflectionClass->getDocComment();
     $arrProperties = $this->searchAllAnnotationsInDoc($strClassDoc);
     if ($objEnum->equals(class_reflection_enum::VALUES())) {
         foreach ($arrProperties as $strName => $arrValues) {
             if (in_array($strValue, $arrValues["values"])) {
                 $arrReturn[] = $strName;
             }
         }
     } else {
         if ($objEnum->equals(class_reflection_enum::PARAMS())) {
             foreach ($arrProperties as $strName => $arrValues) {
                 $arrParameters = $arrValues["params"];
                 foreach ($arrParameters as $arrParams) {
                     foreach ($arrParams as $strParamName => $objParamValue) {
                         if (is_array($objParamValue)) {
                             if (in_array($strValue, $objParamValue)) {
                                 $arrReturn[$strName] = $strName;
                             }
                         } else {
                             if ($objParamValue == $strValue) {
                                 $arrReturn[$strName] = $strName;
                             }
                         }
                     }
                 }
             }
             $arrReturn = array_keys($arrReturn);
         }
     }
     //check if there's a base-class -> inheritance
     $objBaseClass = $this->objReflectionClass->getParentClass();
     if ($objBaseClass !== false) {
         $objBaseAnnotations = new class_reflection($objBaseClass->getName());
         $arrReturn = array_merge($arrReturn, $objBaseAnnotations->getAnnotationsWithValueFromClass($strValue, $objEnum));
     }
     return $arrReturn;
 }
Esempio n. 3
0
 /**
  * @dataProvider additionProvider
  */
 public function testGetAnnotationsWithValueFromClassParameter($a)
 {
     $objAnnotations = new class_reflection(new C());
     $arrClassAnnotations = $objAnnotations->getAnnotationsWithValueFromClass(54, class_reflection_enum::PARAMS());
     $this->assertEquals(1, count($arrClassAnnotations));
     $arrClassAnnotations = $objAnnotations->getAnnotationsWithValueFromClass("0", class_reflection_enum::PARAMS());
     $this->assertEquals(2, count($arrClassAnnotations));
     $this->assertTrue(in_array("@classParamTest2", $arrClassAnnotations));
     $this->assertTrue(in_array("@classParamTest3", $arrClassAnnotations));
     $arrClassAnnotations = $objAnnotations->getAnnotationsWithValueFromClass(0, class_reflection_enum::PARAMS());
     $this->assertEquals(2, count($arrClassAnnotations));
     $this->assertTrue(in_array("@classParamTest2", $arrClassAnnotations));
     $this->assertTrue(in_array("@classParamTest3", $arrClassAnnotations));
     $arrClassAnnotations = $objAnnotations->getAnnotationsWithValueFromClass("hans im glück", class_reflection_enum::PARAMS());
     $this->assertEquals(1, count($arrClassAnnotations));
     $this->assertTrue(in_array("@classParamTest2", $arrClassAnnotations));
     $arrClassAnnotations = $objAnnotations->getAnnotationsWithValueFromClass("", class_reflection_enum::PARAMS());
     $this->assertEquals(0, count($arrClassAnnotations));
 }