<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Mezzo_Model StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:Mezzo_Model
 * @subpackage Structs
 */
class Mezzo_Model extends AbstractStructBase
{
    /**
     * The DataCessazione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataCessazione;
    /**
     * The ID
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ID;
    /**
     * The IDSezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IDSezione;
    /**
     * The Marca
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Marca;
    /**
     * The Modello
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Modello;
    /**
     * The Sigla
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Sigla;
    /**
     * Constructor method for Mezzo_Model
     * @uses Mezzo_Model::setDataCessazione()
     * @uses Mezzo_Model::setID()
     * @uses Mezzo_Model::setIDSezione()
     * @uses Mezzo_Model::setMarca()
     * @uses Mezzo_Model::setModello()
     * @uses Mezzo_Model::setSigla()
     * @param string $dataCessazione
     * @param string $iD
     * @param string $iDSezione
     * @param string $marca
     * @param string $modello
     * @param string $sigla
     */
    public function __construct($dataCessazione = null, $iD = null, $iDSezione = null, $marca = null, $modello = null, $sigla = null)
    {
        $this
            ->setDataCessazione($dataCessazione)
            ->setID($iD)
            ->setIDSezione($iDSezione)
            ->setMarca($marca)
            ->setModello($modello)
            ->setSigla($sigla);
    }
    /**
     * Get DataCessazione value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDataCessazione()
    {
        return isset($this->DataCessazione) ? $this->DataCessazione : null;
    }
    /**
     * Set DataCessazione value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $dataCessazione
     * @return Mezzo_Model
     */
    public function setDataCessazione($dataCessazione = null)
    {
        // validation for constraint: string
        if (!is_null($dataCessazione) && !is_string($dataCessazione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dataCessazione, true), gettype($dataCessazione)), __LINE__);
        }
        if (is_null($dataCessazione) || (is_array($dataCessazione) && empty($dataCessazione))) {
            unset($this->DataCessazione);
        } else {
            $this->DataCessazione = $dataCessazione;
        }
        return $this;
    }
    /**
     * Get ID value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getID()
    {
        return isset($this->ID) ? $this->ID : null;
    }
    /**
     * Set ID value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $iD
     * @return Mezzo_Model
     */
    public function setID($iD = null)
    {
        // validation for constraint: string
        if (!is_null($iD) && !is_string($iD)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iD, true), gettype($iD)), __LINE__);
        }
        if (is_null($iD) || (is_array($iD) && empty($iD))) {
            unset($this->ID);
        } else {
            $this->ID = $iD;
        }
        return $this;
    }
    /**
     * Get IDSezione value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getIDSezione()
    {
        return isset($this->IDSezione) ? $this->IDSezione : null;
    }
    /**
     * Set IDSezione value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $iDSezione
     * @return Mezzo_Model
     */
    public function setIDSezione($iDSezione = null)
    {
        // validation for constraint: string
        if (!is_null($iDSezione) && !is_string($iDSezione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iDSezione, true), gettype($iDSezione)), __LINE__);
        }
        if (is_null($iDSezione) || (is_array($iDSezione) && empty($iDSezione))) {
            unset($this->IDSezione);
        } else {
            $this->IDSezione = $iDSezione;
        }
        return $this;
    }
    /**
     * Get Marca value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getMarca()
    {
        return isset($this->Marca) ? $this->Marca : null;
    }
    /**
     * Set Marca value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $marca
     * @return Mezzo_Model
     */
    public function setMarca($marca = null)
    {
        // validation for constraint: string
        if (!is_null($marca) && !is_string($marca)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($marca, true), gettype($marca)), __LINE__);
        }
        if (is_null($marca) || (is_array($marca) && empty($marca))) {
            unset($this->Marca);
        } else {
            $this->Marca = $marca;
        }
        return $this;
    }
    /**
     * Get Modello value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getModello()
    {
        return isset($this->Modello) ? $this->Modello : null;
    }
    /**
     * Set Modello value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $modello
     * @return Mezzo_Model
     */
    public function setModello($modello = null)
    {
        // validation for constraint: string
        if (!is_null($modello) && !is_string($modello)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($modello, true), gettype($modello)), __LINE__);
        }
        if (is_null($modello) || (is_array($modello) && empty($modello))) {
            unset($this->Modello);
        } else {
            $this->Modello = $modello;
        }
        return $this;
    }
    /**
     * Get Sigla value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getSigla()
    {
        return isset($this->Sigla) ? $this->Sigla : null;
    }
    /**
     * Set Sigla value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $sigla
     * @return Mezzo_Model
     */
    public function setSigla($sigla = null)
    {
        // validation for constraint: string
        if (!is_null($sigla) && !is_string($sigla)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sigla, true), gettype($sigla)), __LINE__);
        }
        if (is_null($sigla) || (is_array($sigla) && empty($sigla))) {
            unset($this->Sigla);
        } else {
            $this->Sigla = $sigla;
        }
        return $this;
    }
}
