protected function validatePostalCode($postalCode, array $subdivisions, AddressFormat $addressFormat, $constraint)
    {
        if (empty($postalCode)) {
            // Nothing to validate.
            return;
        }

        // Resolve the available patterns.
        $fullPattern = $addressFormat->getPostalCodePattern();
        $startPattern = null;
        foreach ($subdivisions as $subdivision) {
            $pattern = $subdivision->getPostalCodePattern();
            if (empty($pattern)) {
                continue;
            }

            if ($subdivision->getPostalCodePatternType() == PatternType::FULL) {
                $fullPattern = $pattern;
            } else {
                $startPattern = $pattern;
            }
        }

        if ($fullPattern) {
            // The pattern must match the provided value completely.
            preg_match('/' . $fullPattern . '/i', $postalCode, $matches);
            if (!isset($matches[0]) || $matches[0] !== $postalCode) {
                $this->addViolation(AddressField::POSTAL_CODE, $constraint->invalidMessage, $postalCode, $addressFormat);

                return;
            }
        }
        if ($startPattern) {
            // The pattern must match the start of the provided value.
            preg_match('/' . $startPattern . '/i', $postalCode, $matches);
            if (!isset($matches[0]) || strpos($postalCode, $matches[0]) !== 0) {
                $this->addViolation(AddressField::POSTAL_CODE, $constraint->invalidMessage, $postalCode, $addressFormat);

                return;
            }
        }
    }
protected function validatePostalCode($postalCode, array $subdivisions, AddressFormat $addressFormat, $constraint)
    {
        if (empty($postalCode)) {
            // Nothing to validate.
            return;
        }

        // Resolve the available patterns.
        $fullPattern = $addressFormat->getPostalCodePattern();
        $startPattern = null;
        foreach ($subdivisions as $subdivision) {
            $pattern = $subdivision->getPostalCodePattern();
            if (empty($pattern)) {
                continue;
            }

            if ($subdivision->getPostalCodePatternType() == PatternType::FULL) {
                $fullPattern = $pattern;
            } else {
                $startPattern = $pattern;
            }
        }

        if ($fullPattern) {
            // The pattern must match the provided value completely.
            preg_match('/' . $fullPattern . '/i', $postalCode, $matches);
            if (!isset($matches[0]) || $matches[0] !== $postalCode) {
                $this->addViolation(AddressField::POSTAL_CODE, $constraint->invalidMessage, $postalCode, $addressFormat);

                return;
            }
        }
        if ($startPattern) {
            // The pattern must match the start of the provided value.
            preg_match('/' . $startPattern . '/i', $postalCode, $matches);
            if (!isset($matches[0]) || strpos($postalCode, $matches[0]) !== 0) {
                $this->addViolation(AddressField::POSTAL_CODE, $constraint->invalidMessage, $postalCode, $addressFormat);

                return;
            }
        }
    }
protected function validatePostalCode ( $ postalCode , array $ subdivisions , AddressFormat $ addressFormat , $ constraint ) { if ( empty ( $ postalCode ) ) { // Nothing to validate. return ; } // Resolve the available patterns. $ fullPattern = $ addressFormat -> getPostalCodePattern ( ) ; $ startPattern = null ; foreach ( $ subdivisions as $ subdivision ) { $ pattern = $ subdivision -> getPostalCodePattern ( ) ; if ( empty ( $ pattern ) ) { continue ; } if ( $ subdivision -> getPostalCodePatternType ( ) == PatternType :: FULL ) { $ fullPattern = $ pattern ; } else { $ startPattern = $ pattern ; } } if ( $ fullPattern ) { // The pattern must match the provided value completely. preg_match ( '/' . $ fullPattern . '/i' , $ postalCode , $ matches ) ; if ( ! isset ( $ matches [ 0 ] ) || $ matches [ 0 ] !== $ postalCode ) { $ this -> addViolation ( AddressField :: POSTAL_CODE , $ constraint -> invalidMessage , $ postalCode , $ addressFormat ) ; return ; } } if ( $ startPattern ) { // The pattern must match the start of the provided value. preg_match ( '/' . $ startPattern . '/i' , $ postalCode , $ matches ) ; if ( ! isset ( $ matches [ 0 ] ) || strpos ( $ postalCode , $ matches [ 0 ] ) !== 0 ) { $ this -> addViolation ( AddressField :: POSTAL_CODE , $ constraint -> invalidMessage , $ postalCode , $ addressFormat ) ; return ; } } }
Validates the provided postal code.

@param string                  $postalCode    The postal code.
@param array                   $subdivisions  An array of found valid subdivisions.
@param AddressFormat           $addressFormat The address format.
@param AddressFormatConstraint $constraint    The constraint.
Validates the provided postal code .