public function validate($value, Constraint $constraint)
    {
        if (null === $value || '' === $value) {
            return;
        }

        if (!is_numeric($value)) {
            $this->context->addViolation($constraint->message);
        }

        $length = strlen($value);
        $oddLength = $length % 2;
        for ($sum = 0, $i = $length - 1; $i >= 0; --$i) {
            $digit = (int) $value[$i];
            $sum += (($i % 2) === $oddLength) ? array_sum(str_split($digit * 2)) : $digit;
        }

        if (($sum % 10) !== 0) {
            $this->context->addViolation($constraint->message);
        }
    }
public function validate($value, Constraint $constraint)
    {
        if (null === $value || '' === $value) {
            return;
        }

        if (!is_numeric($value)) {
            $this->context->addViolation($constraint->message);
        }

        $length = strlen($value);
        $oddLength = $length % 2;
        for ($sum = 0, $i = $length - 1; $i >= 0; --$i) {
            $digit = (int) $value[$i];
            $sum += (($i % 2) === $oddLength) ? array_sum(str_split($digit * 2)) : $digit;
        }

        if (($sum % 10) !== 0) {
            $this->context->addViolation($constraint->message);
        }
    }
public function validate ( $ value , Constraint $ constraint ) { if ( null === $ value || '' === $ value ) { return ; } if ( ! is_numeric ( $ value ) ) { $ this -> context -> addViolation ( $ constraint -> message ) ; } $ length = strlen ( $ value ) ; $ oddLength = $ length % 2 ; for ( $ sum = 0 , $ i = $ length - 1 ; $ i >= 0 ; -- $ i ) { $ digit = ( int ) $ value [ $ i ] ; $ sum += ( ( $ i % 2 ) === $ oddLength ) ? array_sum ( str_split ( $ digit * 2 ) ) : $ digit ; } if ( ( $ sum % 10 ) !== 0 ) { $ this -> context -> addViolation ( $ constraint -> message ) ; } }
Validates a creditcard number with the Luhn algorithm.

@param mixed      $value
@param Constraint $constraint
Validates a creditcard number with the Luhn algorithm .