Ejemplo n.º 1
0
 /**
  * Adds a node type
  *
  * Adding a node type will give the ability to a node to have different kind of properties based on the original
  * node. You can compare it with inheriting functions from a parent class.
  *
  * @param EncoderNode $nodeType
  * @return EncoderNode Returns the EncoderNode if the node type was successfully added
  */
 public static function addNodeType(EncoderNode $nodeType)
 {
     if ($nodeType->getNodeTypeName() === null) {
         throw new EncoderNodeException('The node type you\'re trying to add seems to be a regular node because it has a no type name. Make sure you try to add an EncoderNode with a type name');
     }
     $nodeName = $nodeType->getNodeName();
     $nodeTypeName = $nodeType->getNodeTypeName();
     if (self::nodeTypeExists($nodeName, $nodeTypeName)) {
         throw new EncoderNodeException(sprintf('Node type with name "%s" and node type name "%s" already exists', $nodeName, $nodeTypeName));
     }
     $nodeType->typeName = $nodeTypeName;
     $nodeTypeId = self::getNodeTypeId($nodeType->getNodeName(), $nodeTypeName);
     self::$nodesTypes[$nodeTypeId] = $nodeType;
     self::softCleanNodeTypeCache();
     return $nodeType;
 }