<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for IdentifierPerson_V3 StructType
 * @subpackage Structs
 */
class IdentifierPerson_V3 extends IdentifierResult
{
    /**
     * The LastName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $LastName;
    /**
     * The FirstName
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $FirstName;
    /**
     * The TachoCardInfo
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var \StructType\TachoCardInfo
     */
    public $TachoCardInfo;
    /**
     * Constructor method for IdentifierPerson_V3
     * @uses IdentifierPerson_V3::setLastName()
     * @uses IdentifierPerson_V3::setFirstName()
     * @uses IdentifierPerson_V3::setTachoCardInfo()
     * @param string $lastName
     * @param string $firstName
     * @param \StructType\TachoCardInfo $tachoCardInfo
     */
    public function __construct($lastName = null, $firstName = null, \StructType\TachoCardInfo $tachoCardInfo = null)
    {
        $this
            ->setLastName($lastName)
            ->setFirstName($firstName)
            ->setTachoCardInfo($tachoCardInfo);
    }
    /**
     * Get LastName value
     * @return string|null
     */
    public function getLastName()
    {
        return $this->LastName;
    }
    /**
     * Set LastName value
     * @param string $lastName
     * @return \StructType\IdentifierPerson_V3
     */
    public function setLastName($lastName = null)
    {
        // validation for constraint: string
        if (!is_null($lastName) && !is_string($lastName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastName, true), gettype($lastName)), __LINE__);
        }
        $this->LastName = $lastName;
        return $this;
    }
    /**
     * Get FirstName value
     * @return string|null
     */
    public function getFirstName()
    {
        return $this->FirstName;
    }
    /**
     * Set FirstName value
     * @param string $firstName
     * @return \StructType\IdentifierPerson_V3
     */
    public function setFirstName($firstName = null)
    {
        // validation for constraint: string
        if (!is_null($firstName) && !is_string($firstName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($firstName, true), gettype($firstName)), __LINE__);
        }
        $this->FirstName = $firstName;
        return $this;
    }
    /**
     * Get TachoCardInfo value
     * @return \StructType\TachoCardInfo|null
     */
    public function getTachoCardInfo()
    {
        return $this->TachoCardInfo;
    }
    /**
     * Set TachoCardInfo value
     * @param \StructType\TachoCardInfo $tachoCardInfo
     * @return \StructType\IdentifierPerson_V3
     */
    public function setTachoCardInfo(\StructType\TachoCardInfo $tachoCardInfo = null)
    {
        $this->TachoCardInfo = $tachoCardInfo;
        return $this;
    }
}
