Example #1
0
 /**
  * Create new instance of ResourceType
  *
  * @param ReflectionClass/IType $instanceType     Instance type for the resource,
  *                                                for entity and
  *                                                complex this will
  *                                                be 'ReflectionClass' and for
  *                                                primitive type this
  *                                                will be IType
  * @param ResourceTypeKind      $resourceTypeKind Kind of resource
  *                                               (Entity, Complex or Primitive)
  * @param string                $name             Name of the resource
  * @param string                $namespaceName    Namespace of the resource
  * @param ResourceType          $baseType         Base type of the
  *                                                resource, if exists
  * @param boolean               $isAbstract       Whether resource is abstract
  *
  * @throws InvalidArgumentException
  */
 public function __construct($instanceType, $resourceTypeKind, $name, $namespaceName = null, ResourceType $baseType = null, $isAbstract = false)
 {
     $this->_type = $instanceType;
     if ($resourceTypeKind == ResourceTypeKind::PRIMITIVE) {
         if ($baseType != null) {
             throw new \InvalidArgumentException(Messages::resourceTypeNoBaseTypeForPrimitive());
         }
         if ($isAbstract) {
             throw new \InvalidArgumentException(Messages::resourceTypeNoAbstractForPrimitive());
         }
         if (!$instanceType instanceof IType) {
             throw new \InvalidArgumentException(Messages::resourceTypeTypeShouldImplementIType('$instanceType'));
         }
     } else {
         if (!$instanceType instanceof \ReflectionClass) {
             throw new \InvalidArgumentException(Messages::resourceTypeTypeShouldReflectionClass('$instanceType'));
         }
     }
     $this->_resourceTypeKind = $resourceTypeKind;
     $this->_name = $name;
     $this->_baseType = $baseType;
     $this->_namespaceName = $namespaceName;
     $this->_fullName = is_null($namespaceName) ? $name : $namespaceName . '.' . $name;
     $this->_abstractType = $isAbstract;
     $this->_isMediaLinkEntry = false;
     $this->_customState = null;
     $this->_arrayToDetectLoopInComplexBag = array();
     //TODO: Set MLE if base type has MLE Set
 }