<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for AxleSpacing StructType
 * @subpackage Structs
 */
class AxleSpacing extends AbstractStructBase
{
    /**
     * The axleSpacing
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var float
     */
    public $axleSpacing;
    /**
     * The axleSpacingSequenceIdentifier
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $axleSpacingSequenceIdentifier;
    /**
     * The axleSpacingExtension
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ExtensionType
     */
    public $axleSpacingExtension;
    /**
     * Constructor method for AxleSpacing
     * @uses AxleSpacing::setAxleSpacing()
     * @uses AxleSpacing::setAxleSpacingSequenceIdentifier()
     * @uses AxleSpacing::setAxleSpacingExtension()
     * @param float $axleSpacing
     * @param int $axleSpacingSequenceIdentifier
     * @param \StructType\ExtensionType $axleSpacingExtension
     */
    public function __construct($axleSpacing = null, $axleSpacingSequenceIdentifier = null, \StructType\ExtensionType $axleSpacingExtension = null)
    {
        $this
            ->setAxleSpacing($axleSpacing)
            ->setAxleSpacingSequenceIdentifier($axleSpacingSequenceIdentifier)
            ->setAxleSpacingExtension($axleSpacingExtension);
    }
    /**
     * Get axleSpacing value
     * @return float
     */
    public function getAxleSpacing()
    {
        return $this->axleSpacing;
    }
    /**
     * Set axleSpacing value
     * @param float $axleSpacing
     * @return \StructType\AxleSpacing
     */
    public function setAxleSpacing($axleSpacing = null)
    {
        $this->axleSpacing = $axleSpacing;
        return $this;
    }
    /**
     * Get axleSpacingSequenceIdentifier value
     * @return int
     */
    public function getAxleSpacingSequenceIdentifier()
    {
        return $this->axleSpacingSequenceIdentifier;
    }
    /**
     * Set axleSpacingSequenceIdentifier value
     * @param int $axleSpacingSequenceIdentifier
     * @return \StructType\AxleSpacing
     */
    public function setAxleSpacingSequenceIdentifier($axleSpacingSequenceIdentifier = null)
    {
        // validation for constraint: int
        if (!is_null($axleSpacingSequenceIdentifier) && !is_numeric($axleSpacingSequenceIdentifier)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($axleSpacingSequenceIdentifier)), __LINE__);
        }
        $this->axleSpacingSequenceIdentifier = $axleSpacingSequenceIdentifier;
        return $this;
    }
    /**
     * Get axleSpacingExtension value
     * @return \StructType\ExtensionType|null
     */
    public function getAxleSpacingExtension()
    {
        return $this->axleSpacingExtension;
    }
    /**
     * Set axleSpacingExtension value
     * @param \StructType\ExtensionType $axleSpacingExtension
     * @return \StructType\AxleSpacing
     */
    public function setAxleSpacingExtension(\StructType\ExtensionType $axleSpacingExtension = null)
    {
        $this->axleSpacingExtension = $axleSpacingExtension;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \StructType\AxleSpacing
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
