<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for DossierSimulation StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:DossierSimulation
 * @subpackage Structs
 */
class DossierSimulation extends AbstractStructBase
{
    /**
     * The NumeroDossier
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NumeroDossier;
    /**
     * The Nom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Nom;
    /**
     * The Prenom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Prenom;
    /**
     * The URL
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $URL;
    /**
     * Constructor method for DossierSimulation
     * @uses DossierSimulation::setNumeroDossier()
     * @uses DossierSimulation::setNom()
     * @uses DossierSimulation::setPrenom()
     * @uses DossierSimulation::setURL()
     * @param string $numeroDossier
     * @param string $nom
     * @param string $prenom
     * @param string $uRL
     */
    public function __construct($numeroDossier = null, $nom = null, $prenom = null, $uRL = null)
    {
        $this
            ->setNumeroDossier($numeroDossier)
            ->setNom($nom)
            ->setPrenom($prenom)
            ->setURL($uRL);
    }
    /**
     * Get NumeroDossier 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 getNumeroDossier()
    {
        return isset($this->NumeroDossier) ? $this->NumeroDossier : null;
    }
    /**
     * Set NumeroDossier 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 $numeroDossier
     * @return DossierSimulation
     */
    public function setNumeroDossier($numeroDossier = null)
    {
        // validation for constraint: string
        if (!is_null($numeroDossier) && !is_string($numeroDossier)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($numeroDossier, true), gettype($numeroDossier)), __LINE__);
        }
        if (is_null($numeroDossier) || (is_array($numeroDossier) && empty($numeroDossier))) {
            unset($this->NumeroDossier);
        } else {
            $this->NumeroDossier = $numeroDossier;
        }
        return $this;
    }
    /**
     * Get Nom 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 getNom()
    {
        return isset($this->Nom) ? $this->Nom : null;
    }
    /**
     * Set Nom 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 $nom
     * @return DossierSimulation
     */
    public function setNom($nom = null)
    {
        // validation for constraint: string
        if (!is_null($nom) && !is_string($nom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($nom, true), gettype($nom)), __LINE__);
        }
        if (is_null($nom) || (is_array($nom) && empty($nom))) {
            unset($this->Nom);
        } else {
            $this->Nom = $nom;
        }
        return $this;
    }
    /**
     * Get Prenom 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 getPrenom()
    {
        return isset($this->Prenom) ? $this->Prenom : null;
    }
    /**
     * Set Prenom 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 $prenom
     * @return DossierSimulation
     */
    public function setPrenom($prenom = null)
    {
        // validation for constraint: string
        if (!is_null($prenom) && !is_string($prenom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($prenom, true), gettype($prenom)), __LINE__);
        }
        if (is_null($prenom) || (is_array($prenom) && empty($prenom))) {
            unset($this->Prenom);
        } else {
            $this->Prenom = $prenom;
        }
        return $this;
    }
    /**
     * Get URL 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 getURL()
    {
        return isset($this->URL) ? $this->URL : null;
    }
    /**
     * Set URL 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 $uRL
     * @return DossierSimulation
     */
    public function setURL($uRL = null)
    {
        // validation for constraint: string
        if (!is_null($uRL) && !is_string($uRL)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($uRL, true), gettype($uRL)), __LINE__);
        }
        if (is_null($uRL) || (is_array($uRL) && empty($uRL))) {
            unset($this->URL);
        } else {
            $this->URL = $uRL;
        }
        return $this;
    }
}
