以这种方式使用return语句是错误的吗?

时间:2012-12-12 16:31:26

标签: php loops autoloader

我有这个自动加载器方法,用于根据需要包含类文件。

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语句,因为我总是将它与从方法中返回一些值相关联。

3 个答案:

答案 0 :(得分:3)

返回可以用来简单地打破一个方法/函数,这种用法是完全合法的。真正的问题是你觉得它对可读性有什么影响?

早期回归有不同的思想流派。

一所学校维护一个入口/出口点,声明它使代码更容易阅读,因为可以确保将达到代码底部的逻辑。

另一所学校表示,第一所学校已经过时,这并不是一个令人担忧的问题,特别是如果一个学校保持较短的方法/功能长度。

在两者之间存在一种媒介,其中存在早期回归和复杂逻辑之间的权衡。

归结为你的判断。

答案 1 :(得分:1)

不,没有错以这种方式使用返回。

答案 2 :(得分:0)

至少看一下手册:

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

void __autoload ( string $class )

void 表示不应该返回任何内容 但这不是错误。

在包含类定义时,最好还使用require_once