<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Pre-Hire_Probation_Review_DataType StructType
 * Meta information extracted from the WSDL
 * - documentation: Details of Probation Period Review
 * @subpackage Structs
 */
class Pre_Hire_Probation_Review_DataType extends AbstractStructBase
{
    /**
     * The Derive_Probation_Period_Review_from_Rule
     * Meta information extracted from the WSDL
     * - documentation: Derive Probation Period Review from Rule
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $Derive_Probation_Period_Review_from_Rule;
    /**
     * The Probation_Period_Review_Length
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\Pre_Hire_Probation_Period_Review_LengthType
     */
    public $Probation_Period_Review_Length;
    /**
     * Constructor method for Pre-Hire_Probation_Review_DataType
     * @uses Pre_Hire_Probation_Review_DataType::setDerive_Probation_Period_Review_from_Rule()
     * @uses Pre_Hire_Probation_Review_DataType::setProbation_Period_Review_Length()
     * @param bool $derive_Probation_Period_Review_from_Rule
     * @param \StructType\Pre_Hire_Probation_Period_Review_LengthType $probation_Period_Review_Length
     */
    public function __construct($derive_Probation_Period_Review_from_Rule = null, \StructType\Pre_Hire_Probation_Period_Review_LengthType $probation_Period_Review_Length = null)
    {
        $this
            ->setDerive_Probation_Period_Review_from_Rule($derive_Probation_Period_Review_from_Rule)
            ->setProbation_Period_Review_Length($probation_Period_Review_Length);
    }
    /**
     * Get Derive_Probation_Period_Review_from_Rule value
     * @return bool|null
     */
    public function getDerive_Probation_Period_Review_from_Rule()
    {
        return $this->Derive_Probation_Period_Review_from_Rule;
    }
    /**
     * Set Derive_Probation_Period_Review_from_Rule value
     * @param bool $derive_Probation_Period_Review_from_Rule
     * @return \StructType\Pre_Hire_Probation_Review_DataType
     */
    public function setDerive_Probation_Period_Review_from_Rule($derive_Probation_Period_Review_from_Rule = null)
    {
        // validation for constraint: boolean
        if (!is_null($derive_Probation_Period_Review_from_Rule) && !is_bool($derive_Probation_Period_Review_from_Rule)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($derive_Probation_Period_Review_from_Rule, true), gettype($derive_Probation_Period_Review_from_Rule)), __LINE__);
        }
        $this->Derive_Probation_Period_Review_from_Rule = $derive_Probation_Period_Review_from_Rule;
        return $this;
    }
    /**
     * Get Probation_Period_Review_Length value
     * @return \StructType\Pre_Hire_Probation_Period_Review_LengthType|null
     */
    public function getProbation_Period_Review_Length()
    {
        return $this->Probation_Period_Review_Length;
    }
    /**
     * Set Probation_Period_Review_Length value
     * @param \StructType\Pre_Hire_Probation_Period_Review_LengthType $probation_Period_Review_Length
     * @return \StructType\Pre_Hire_Probation_Review_DataType
     */
    public function setProbation_Period_Review_Length(\StructType\Pre_Hire_Probation_Period_Review_LengthType $probation_Period_Review_Length = null)
    {
        $this->Probation_Period_Review_Length = $probation_Period_Review_Length;
        return $this;
    }
}
