<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CustomRecordTypeForms StructType
 * @subpackage Structs
 */
class CustomRecordTypeForms extends AbstractStructBase
{
    /**
     * The formEdit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $formEdit;
    /**
     * The formName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $formName;
    /**
     * The formPref
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $formPref;
    /**
     * Constructor method for CustomRecordTypeForms
     * @uses CustomRecordTypeForms::setFormEdit()
     * @uses CustomRecordTypeForms::setFormName()
     * @uses CustomRecordTypeForms::setFormPref()
     * @param string $formEdit
     * @param string $formName
     * @param bool $formPref
     */
    public function __construct($formEdit = null, $formName = null, $formPref = null)
    {
        $this
            ->setFormEdit($formEdit)
            ->setFormName($formName)
            ->setFormPref($formPref);
    }
    /**
     * Get formEdit value
     * @return string|null
     */
    public function getFormEdit()
    {
        return $this->formEdit;
    }
    /**
     * Set formEdit value
     * @param string $formEdit
     * @return \StructType\CustomRecordTypeForms
     */
    public function setFormEdit($formEdit = null)
    {
        // validation for constraint: string
        if (!is_null($formEdit) && !is_string($formEdit)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($formEdit, true), gettype($formEdit)), __LINE__);
        }
        $this->formEdit = $formEdit;
        return $this;
    }
    /**
     * Get formName value
     * @return string|null
     */
    public function getFormName()
    {
        return $this->formName;
    }
    /**
     * Set formName value
     * @param string $formName
     * @return \StructType\CustomRecordTypeForms
     */
    public function setFormName($formName = null)
    {
        // validation for constraint: string
        if (!is_null($formName) && !is_string($formName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($formName, true), gettype($formName)), __LINE__);
        }
        $this->formName = $formName;
        return $this;
    }
    /**
     * Get formPref value
     * @return bool|null
     */
    public function getFormPref()
    {
        return $this->formPref;
    }
    /**
     * Set formPref value
     * @param bool $formPref
     * @return \StructType\CustomRecordTypeForms
     */
    public function setFormPref($formPref = null)
    {
        // validation for constraint: boolean
        if (!is_null($formPref) && !is_bool($formPref)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($formPref, true), gettype($formPref)), __LINE__);
        }
        $this->formPref = $formPref;
        return $this;
    }
}
