我有这个自动加载器方法,用于根据需要包含类文件。
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语句,因为我总是将它与从方法中返回一些值相关联。
答案 0 :(得分:3)
返回可以用来简单地打破一个方法/函数,这种用法是完全合法的。真正的问题是你觉得它对可读性有什么影响?
早期回归有不同的思想流派。
一所学校维护一个入口/出口点,声明它使代码更容易阅读,因为可以确保将达到代码底部的逻辑。
另一所学校表示,第一所学校已经过时,这并不是一个令人担忧的问题,特别是如果一个学校保持较短的方法/功能长度。
在两者之间存在一种媒介,其中存在早期回归和复杂逻辑之间的权衡。
归结为你的判断。
答案 1 :(得分:1)
不,没有错以这种方式使用返回。
答案 2 :(得分:0)
至少看一下手册:
http://php.net/manual/en/function.autoload.php
void __autoload ( string $class )
void 表示不应该返回任何内容 但这不是错误。
在包含类定义时,最好还使用require_once
。