<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for InterfacePersonContactInfo_V3 StructType
 * @subpackage Structs
 */
class InterfacePersonContactInfo_V3 extends AbstractStructBase
{
    /**
     * The Phone
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Phone;
    /**
     * The GsmNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $GsmNumber;
    /**
     * The Email
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Email;
    /**
     * The Address
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\PersonAddress_V3
     */
    public $Address;
    /**
     * Constructor method for InterfacePersonContactInfo_V3
     * @uses InterfacePersonContactInfo_V3::setPhone()
     * @uses InterfacePersonContactInfo_V3::setGsmNumber()
     * @uses InterfacePersonContactInfo_V3::setEmail()
     * @uses InterfacePersonContactInfo_V3::setAddress()
     * @param string $phone
     * @param string $gsmNumber
     * @param string $email
     * @param \StructType\PersonAddress_V3 $address
     */
    public function __construct($phone = null, $gsmNumber = null, $email = null, \StructType\PersonAddress_V3 $address = null)
    {
        $this
            ->setPhone($phone)
            ->setGsmNumber($gsmNumber)
            ->setEmail($email)
            ->setAddress($address);
    }
    /**
     * Get Phone value
     * @return string|null
     */
    public function getPhone()
    {
        return $this->Phone;
    }
    /**
     * Set Phone value
     * @param string $phone
     * @return \StructType\InterfacePersonContactInfo_V3
     */
    public function setPhone($phone = null)
    {
        // validation for constraint: string
        if (!is_null($phone) && !is_string($phone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($phone, true), gettype($phone)), __LINE__);
        }
        $this->Phone = $phone;
        return $this;
    }
    /**
     * Get GsmNumber value
     * @return string|null
     */
    public function getGsmNumber()
    {
        return $this->GsmNumber;
    }
    /**
     * Set GsmNumber value
     * @param string $gsmNumber
     * @return \StructType\InterfacePersonContactInfo_V3
     */
    public function setGsmNumber($gsmNumber = null)
    {
        // validation for constraint: string
        if (!is_null($gsmNumber) && !is_string($gsmNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($gsmNumber, true), gettype($gsmNumber)), __LINE__);
        }
        $this->GsmNumber = $gsmNumber;
        return $this;
    }
    /**
     * Get Email value
     * @return string|null
     */
    public function getEmail()
    {
        return $this->Email;
    }
    /**
     * Set Email value
     * @param string $email
     * @return \StructType\InterfacePersonContactInfo_V3
     */
    public function setEmail($email = null)
    {
        // validation for constraint: string
        if (!is_null($email) && !is_string($email)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($email, true), gettype($email)), __LINE__);
        }
        $this->Email = $email;
        return $this;
    }
    /**
     * Get Address value
     * @return \StructType\PersonAddress_V3|null
     */
    public function getAddress()
    {
        return $this->Address;
    }
    /**
     * Set Address value
     * @param \StructType\PersonAddress_V3 $address
     * @return \StructType\InterfacePersonContactInfo_V3
     */
    public function setAddress(\StructType\PersonAddress_V3 $address = null)
    {
        $this->Address = $address;
        return $this;
    }
}
