Storm\Core\Object\EntityMap::AddProperty PHP Method

AddProperty() private method

Adds a property to the given entity map.
private AddProperty ( Storm\Core\Object\IProperty $Property ) : void
$Property Storm\Core\Object\IProperty The property to add
return void
    private function AddProperty(IProperty $Property)
    {
        if ($Property->HasEntityMap()) {
            if (!$Property->GetEntityMap()->Is($this)) {
                throw new InvalidPropertyException('The supplied property is registered with another entity map %s.', get_class($Property->GetEntityMap()));
            }
        }
        $Property->SetEntityMap($this);
        $Identifier = $Property->GetIdentifier();
        if ($Property instanceof IDataProperty) {
            $this->DataProperties[$Identifier] = $Property;
            if ($Property->IsIdentity()) {
                $this->IdentityProperties[$Identifier] = $Property;
            }
        } else {
            if ($Property instanceof IEntityProperty) {
                $this->EntityProperties[$Identifier] = $Property;
            } else {
                if ($Property instanceof ICollectionProperty) {
                    $this->CollectionProperties[$Identifier] = $Property;
                } else {
                    throw new InvalidPropertyException('The supplied property must be of type %s, %s, %s: %s given', IDataProperty::IDataPropertyType, IEntityProperty::IEntityPropertyType, ICollectionProperty::ICollectionPropertyType, get_class($Property));
                }
            }
        }
        if ($Property instanceof IRelationshipProperty) {
            $this->RelationshipProperties[$Identifier] = $Property;
        }
        $this->Properties[$Identifier] = $Property;
    }