public function validateProperty(string $property, $allowed): bool
    {
        if (is_string($allowed)) {
            $allowed = explode('|', $allowed);
        }

        if (!is_array($allowed)) {
            throw new InvalidTypeException('$allowed must be a string or array');
        }

        $valid = false;
        $optional = in_array('optional', $allowed);

        if ($optional && (!isset($this->{$property}) || $this->{$property} === null)) {
            return true;
        }

        foreach ($allowed as $index => $type) {
            if ($type === 'optional') {
                continue;
            }

            if ($valid = $this->validatePropertyType($property, $type)) {
                break;
            }
        }

        if (!$valid) {
            $this->throwInvalidTypeException($property, $allowed, $optional);
        }

        return true;
    }
public function validateProperty(string $property, $allowed): bool
    {
        if (is_string($allowed)) {
            $allowed = explode('|', $allowed);
        }

        if (!is_array($allowed)) {
            throw new InvalidTypeException('$allowed must be a string or array');
        }

        $valid = false;
        $optional = in_array('optional', $allowed);

        if ($optional && (!isset($this->{$property}) || $this->{$property} === null)) {
            return true;
        }

        foreach ($allowed as $index => $type) {
            if ($type === 'optional') {
                continue;
            }

            if ($valid = $this->validatePropertyType($property, $type)) {
                break;
            }
        }

        if (!$valid) {
            $this->throwInvalidTypeException($property, $allowed, $optional);
        }

        return true;
    }
public function validateProperty ( string $ property , $ allowed ) : bool { if ( is_string ( $ allowed ) ) { $ allowed = explode ( '|' , $ allowed ) ; } if ( ! is_array ( $ allowed ) ) { throw new InvalidTypeException ( '$allowed must be a string or array' ) ; } $ valid = false ; $ optional = in_array ( 'optional' , $ allowed ) ; if ( $ optional && ( ! isset ( $ this -> { $ property } ) || $ this -> { $ property } === null ) ) { return true ; } foreach ( $ allowed as $ index => $ type ) { if ( $ type === 'optional' ) { continue ; } if ( $ valid = $ this -> validatePropertyType ( $ property , $ type ) ) { break ; } } if ( ! $ valid ) { $ this -> throwInvalidTypeException ( $ property , $ allowed , $ optional ) ; } return true ; }
Validate the property against its allowed types

@param string       $property
@param string|array $allowed
@return bool
@throws \Laranix\Support\Exception\InvalidTypeException
Validate the property against its allowed types