예제 #1
0
 /**
  * Creates a new instance of this class or one of the specialized sub-classes.
  *
  * @todo replace the switch statement with an intelligent container / plugin system.
  *
  * @param string                          $namespace Namespace where this tag occurs.
  * @param string[]                        $namespace_aliases aliases used for all namespaces at the location of this tag.
  * @param SimpleXMLElement                $xml       root xml element for this tag.
  * @param DocBlox_Reflection_DocBlock_Tag $tag       The actual tag as reflected.
  *
  * @return DocBlox_Parser_DocBlock_Tag_Definition
  */
 public static function create($namespace, $namespace_aliases, SimpleXMLElement $xml, DocBlox_Reflection_DocBlock_Tag $tag)
 {
     switch ($tag->getName()) {
         case 'param':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Param($namespace, $namespace_aliases, $xml, $tag);
             break;
         case 'link':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Link($namespace, $namespace_aliases, $xml, $tag);
             break;
         default:
             $def = new self($namespace, $namespace_aliases, $xml, $tag);
             break;
     }
     $def->configure();
     return $def;
 }
예제 #2
0
 /**
  * Creates a new instance of this class or one of the specialized sub-classes.
  *
  * @param string                          $namespace         Namespace where
  *  this tag occurs.
  * @param string[]                        $namespace_aliases Aliases used
  *  for all namespaces at the location of this tag.
  * @param SimpleXMLElement                $xml               Root xml element
  *  for this tag.
  * @param DocBlox_Reflection_DocBlock_Tag $tag               The actual tag
  *  as reflected.
  *
  * @todo replace the switch statement with an intelligent container /
  * plugin system.
  *
  * @return DocBlox_Parser_DocBlock_Tag_Definition
  */
 public static function create($namespace, $namespace_aliases, SimpleXMLElement $xml, DocBlox_Reflection_DocBlock_Tag $tag)
 {
     $tag_name = $tag->getName();
     // check whether the tag name is namespaced and replace alias with full
     // name to get the FQCN form
     if (strpos($tag_name, '\\') !== false) {
         $tag_name = explode('\\', $tag_name);
         if (count($tag_name) > 1 && isset($namespace_aliases[$tag_name[0]])) {
             $tag_name[0] = $namespace_aliases[$tag_name[0]];
         }
         $tag_name = implode('\\', $tag_name);
         if ($tag_name[0] != '\\') {
             $tag_name = '\\' . $tag_name;
         }
     }
     $tag_name = strtolower($tag_name);
     switch ($tag_name) {
         case 'property-write':
         case 'property-read':
         case 'property':
         case 'param':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Param($namespace, $namespace_aliases, $xml, $tag);
             break;
         case 'see':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_See($namespace, $namespace_aliases, $xml, $tag);
             break;
         case 'method':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Method($namespace, $namespace_aliases, $xml, $tag);
             break;
         case 'uses':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Uses($namespace, $namespace_aliases, $xml, $tag);
             break;
         case 'link':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Link($namespace, $namespace_aliases, $xml, $tag);
             break;
         case '\\doctrine\\orm\\mapping\\column':
         case '\\doctrine\\orm\\mapping\\changetrackingpolicy':
         case '\\doctrine\\orm\\mapping\\discriminatorcolumn':
         case '\\doctrine\\orm\\mapping\\discriminatormap':
         case '\\doctrine\\orm\\mapping\\entity':
         case '\\doctrine\\orm\\mapping\\generatedvalue':
         case '\\doctrine\\orm\\mapping\\haslifecyclecallbacks':
         case '\\doctrine\\orm\\mapping\\id':
         case '\\doctrine\\orm\\mapping\\inheritancetype':
         case '\\doctrine\\orm\\mapping\\joincolumn':
         case '\\doctrine\\orm\\mapping\\jointable':
         case '\\doctrine\\orm\\mapping\\manytoone':
         case '\\doctrine\\orm\\mapping\\manytomany':
         case '\\doctrine\\orm\\mapping\\mappedsuperclass':
         case '\\doctrine\\orm\\mapping\\onetoone':
         case '\\doctrine\\orm\\mapping\\onetomany':
         case '\\doctrine\\orm\\mapping\\orderby':
         case '\\doctrine\\orm\\mapping\\postload':
         case '\\doctrine\\orm\\mapping\\postpersist':
         case '\\doctrine\\orm\\mapping\\postremove':
         case '\\doctrine\\orm\\mapping\\postupdate':
         case '\\doctrine\\orm\\mapping\\prepersist':
         case '\\doctrine\\orm\\mapping\\preremove':
         case '\\doctrine\\orm\\mapping\\preupdate':
         case '\\doctrine\\orm\\mapping\\sequencegenerator':
         case '\\doctrine\\orm\\mapping\\table':
         case '\\doctrine\\orm\\mapping\\uniqueconstraint':
         case '\\doctrine\\orm\\mapping\\version':
         case 'column':
         case 'changetrackingpolicy':
         case 'discriminatorcolumn':
         case 'discriminatormap':
         case 'entity':
         case 'generatedvalue':
         case 'haslifecyclecallbacks':
         case 'id':
         case 'inheritancetype':
         case 'joincolumn':
         case 'jointable':
         case 'manytoone':
         case 'manytomany':
         case 'mappedsuperclass':
         case 'onetoone':
         case 'onetomany':
         case 'orderby':
         case 'postload':
         case 'postpersist':
         case 'postremove':
         case 'postupdate':
         case 'prepersist':
         case 'preremove':
         case 'preupdate':
         case 'sequencegenerator':
         case 'table':
         case 'uniqueconstraint':
         case 'version':
             $def = new DocBlox_Parser_DocBlock_Tag_Definition_Doctrine($namespace, $namespace_aliases, $xml, $tag);
             break;
         default:
             $def = new self($namespace, $namespace_aliases, $xml, $tag);
             break;
     }
     $def->configure();
     return $def;
 }