0

必要に応じてクラスファイルを含めるために使用されるこのオートローダーメソッドがあります。

public static function autoloader($className) {

    $fileExists = false;
    foreach(array(LIBS_PATH, CONTROLLERS_PATH, MODELS_PATH) as $path) {

        // Check if the class file exists and is readable
        if(is_readable($classPath = $path . '/' . $className . '.php')) {
            // Include the file
            require($classPath);
            $fileExists = true;
            break;
        }
    }

    if($fileExists === false) {
        exit('The application cannot continue as it is not able to locate a required class.');
    }
}

それはうまくいきますが、私はこの方法の方が良いと思っていました:

public static function autoloader($className) {

    foreach(array(LIBS_PATH, CONTROLLERS_PATH, MODELS_PATH) as $path) {

        // Check if the class file exists and is readable
        if(is_readable($classPath = $path . '/' . $className . '.php')) {
            // Include the file
            require($classPath);
            return;
        }
    }
    exit('The application cannot continue as it is not able to locate a required class.');
}

ご覧のとおり、クラスファイルが含まれていてメソッドがその役割を果たしているため、ループの途中でreturnステートメントを使用して残りの関数を終了しています。

一致するものが見つかった場合にループから抜け出すための最良の方法はどれですか?私は常にreturnステートメントをメソッドからの値の戻りに関連付けているため、returnステートメントの使用についてはよくわかりません。

4

3 に答える 3

3

Returnは、メソッド/関数から簡単に抜け出すために使用でき、この使用は完全に合法です。本当の質問は、それが読みやすさにどのような影響を与えると思いますか?

早期復帰についてはさまざまな考え方があります。

ある学校は単一の入口/出口ポイントを維持しており、コードの下部にあるロジックに確実に到達できるため、コードが読みやすくなると述べています。

別の学校は、最初の学校は時代遅れであると述べています。これは、特にメソッド/関数の長さが短い場合は、それほど差し迫った問題ではありません。

早期リターンと複雑なロジックの間のトレードオフが存在する2つの間に媒体が存在します。

それはあなたの判断に帰着します。

于 2012-12-12T16:34:15.497 に答える
1

いいえ、この方法でreturnを使用することは間違いではありません。

于 2012-12-12T16:34:48.007 に答える
0

少なくともマニュアルを見てください:

http://php.net/manual/en/function.autoload.php

void __autoload ( string $class )

voidは、何も返さないことを意味します。
しかし、それはエラーではありません。

またrequire_once、クラス定義を含める場合にも使用します。

于 2012-12-12T16:35:10.570 に答える