PHP字符序列检查功能

时间:2012-05-10 18:19:53

标签: php

我如何压缩这个php方法以获得更少的代码,但仍然可读且功能强大?你会在这段代码中改变什么?

public function charCount($string, $max, $min) {

    $stringCount = strlen($string);

    if(isset($max) || isset($min)) {
        //Testing Max Chars
        if($stringCount > $max) {
            return 'String length: ' . $stringCount . "<br />
                    Max Chars: " . $max . "<br />
                    Error: To Long";


        }
        else if($stringCount < $min) {
            return 'String length: ' . $stringCount . "<br />
                        Min Chars: " . $max . "<br />
                        Error: To Short";
        }
        else {
            return true;
        }
    }

    else {
        return true;
    }
}

4 个答案:

答案 0 :(得分:4)

首先,我会选择返回一个布尔字符串,但不是两者都有,原因是有一个均质接口。

但是如果出现错误,可以使用false

我会选择这样的事情:

function charCount($string, $min = null, $max = null) {
    $length = strlen($string);

    $result = false;

    if ($max && $length > $max) {
        $result = sprintf('String length: <br />Max Chars: <br />Error: To Long', $length, $max);
    }

    if ($min && $length < $min) {
        $result = sprintf('String length: <br />Min Chars: <br />Error: To Short', $length, $min);
    }

    return $result;
}

答案 1 :(得分:3)

public function charCount($string, $max = false, $min = false) {

    $stringCount = strlen($string);

    if($max!==false && $stringCount > $max){
        return 'String length: ' . $stringCount . "<br />Max Chars: " . $max . "<br />Error: To Long";
    }

    if($min!==false && $stringCount < $min){
        return 'String length: ' . $stringCount . "<br />Min Chars: " . $min . "<br />Error: To Short";
    }

    return true;
}

答案 2 :(得分:0)

public function charCount($string, $max, $min) {

$stringCount = strlen($string);

if(isset($max) || isset($min)) {
    $return_value = '';
    //Testing Max Chars
    if($stringCount > $max) {
        $return_value = 'String length: ' . $stringCount . "<br />
                Max Chars: " . $max . "<br />
                Error: Too Long";


    }
    else if($stringCount < $min) {
        $return_value = 'String length: ' . $stringCount . "<br />
                    Min Chars: " . $min . "<br />
                    Error: Too Short";
    }
    return $return_value;
}
return true;
}

答案 3 :(得分:0)

我会这样写:

public function charCount($string, $max = false, $min = false) {

    $stringCount = strlen($string);

    if (false !== $max && $stringCount > $max) {
        //Testing Max Chars
        return 'String length: ' . $stringCount . "<br />
                Max Chars: " . $max . "<br />
                Error: To Long";
    } else if (false !== $min && $stringCount < $min) {
        return 'String length: ' . $stringCount . "<br />
                    Min Chars: " . $max . "<br />
                    Error: To Short";
    } else {
        return true;
    }
}

除此之外我认为没关系。可读性应始终优先于任何事情,除非性能确实是一个问题。在这种情况下,简化if-else条件有助于提高可读性,顺便提一下也减少了行数,但我认为后者并不重要。此外,默认值。