<?php

namespace Sabre\CreatePassengerNameRecord\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for EnhancedMultipleFOP Structs
 * @subpackage Structs
 */
class EnhancedMultipleFOP extends AbstractStructBase
{
    /**
     * The Fare
     * @var \Sabre\CreatePassengerNameRecord\Structs\Fare
     */
    public $Fare;
    /**
     * The FOP_One
     * @var \Sabre\CreatePassengerNameRecord\Structs\FOP_One
     */
    public $FOP_One;
    /**
     * The FOP_Two
     * @var \Sabre\CreatePassengerNameRecord\Structs\FOP_Two
     */
    public $FOP_Two;
    /**
     * The Taxes
     * @var \Sabre\CreatePassengerNameRecord\Structs\Taxes
     */
    public $Taxes;
    /**
     * Constructor method for EnhancedMultipleFOP
     * @uses EnhancedMultipleFOP::setFare()
     * @uses EnhancedMultipleFOP::setFOP_One()
     * @uses EnhancedMultipleFOP::setFOP_Two()
     * @uses EnhancedMultipleFOP::setTaxes()
     * @param \Sabre\CreatePassengerNameRecord\Structs\Fare $fare
     * @param \Sabre\CreatePassengerNameRecord\Structs\FOP_One $fOP_One
     * @param \Sabre\CreatePassengerNameRecord\Structs\FOP_Two $fOP_Two
     * @param \Sabre\CreatePassengerNameRecord\Structs\Taxes $taxes
     */
    public function __construct(\Sabre\CreatePassengerNameRecord\Structs\Fare $fare = null, \Sabre\CreatePassengerNameRecord\Structs\FOP_One $fOP_One = null, \Sabre\CreatePassengerNameRecord\Structs\FOP_Two $fOP_Two = null, \Sabre\CreatePassengerNameRecord\Structs\Taxes $taxes = null)
    {
        $this
            ->setFare($fare)
            ->setFOP_One($fOP_One)
            ->setFOP_Two($fOP_Two)
            ->setTaxes($taxes);
    }
    /**
     * Get Fare value
     * @return \Sabre\CreatePassengerNameRecord\Structs\Fare|null
     */
    public function getFare()
    {
        return $this->Fare;
    }
    /**
     * Set Fare value
     * @param \Sabre\CreatePassengerNameRecord\Structs\Fare $fare
     * @return \Sabre\CreatePassengerNameRecord\Structs\EnhancedMultipleFOP
     */
    public function setFare(\Sabre\CreatePassengerNameRecord\Structs\Fare $fare = null)
    {
        $this->Fare = $fare;
        return $this;
    }
    /**
     * Get FOP_One value
     * @return \Sabre\CreatePassengerNameRecord\Structs\FOP_One|null
     */
    public function getFOP_One()
    {
        return $this->FOP_One;
    }
    /**
     * Set FOP_One value
     * @param \Sabre\CreatePassengerNameRecord\Structs\FOP_One $fOP_One
     * @return \Sabre\CreatePassengerNameRecord\Structs\EnhancedMultipleFOP
     */
    public function setFOP_One(\Sabre\CreatePassengerNameRecord\Structs\FOP_One $fOP_One = null)
    {
        $this->FOP_One = $fOP_One;
        return $this;
    }
    /**
     * Get FOP_Two value
     * @return \Sabre\CreatePassengerNameRecord\Structs\FOP_Two|null
     */
    public function getFOP_Two()
    {
        return $this->FOP_Two;
    }
    /**
     * Set FOP_Two value
     * @param \Sabre\CreatePassengerNameRecord\Structs\FOP_Two $fOP_Two
     * @return \Sabre\CreatePassengerNameRecord\Structs\EnhancedMultipleFOP
     */
    public function setFOP_Two(\Sabre\CreatePassengerNameRecord\Structs\FOP_Two $fOP_Two = null)
    {
        $this->FOP_Two = $fOP_Two;
        return $this;
    }
    /**
     * Get Taxes value
     * @return \Sabre\CreatePassengerNameRecord\Structs\Taxes|null
     */
    public function getTaxes()
    {
        return $this->Taxes;
    }
    /**
     * Set Taxes value
     * @param \Sabre\CreatePassengerNameRecord\Structs\Taxes $taxes
     * @return \Sabre\CreatePassengerNameRecord\Structs\EnhancedMultipleFOP
     */
    public function setTaxes(\Sabre\CreatePassengerNameRecord\Structs\Taxes $taxes = null)
    {
        $this->Taxes = $taxes;
        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 \Sabre\CreatePassengerNameRecord\Structs\EnhancedMultipleFOP
     */
    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__;
    }
}
