我做了很多搜索,但无法找到任何明确的指南。请你们其中一位专家回答我的问题。 我们应该在何时/何时使用"返回false"在数组或if语句中。 例如:
if(file_exists($p)) {
// do something
} else {
echo $error;
return FALSE;
}
整个代码:
class Base {
function __construct() {
$url = $_GET['url'];
$url = explode('/',$url);
$p = $url[0].'.php';
if(file_exists($p)) {
require($p);
} else {
require('error.php');
$error = new error();
$error->Not_Exist();
return FALSE;
}
}
请有人向我解释使用return false的原因。
答案 0 :(得分:2)
首先,如果值可能将被用于,则返回值才有意义。您可以返回任何您想要的东西,即使它不会被使用,但重点是什么?
这是有道理的:
function isOfAge($age) {
if ($age >= 18) {
return true;
}
return false;
// Shorter:
// return $age >= 18;
}
这没有多大意义:
function outputName($name) {
echo "Your name is {$name}!";
return true;
}
其次,如果函数的结果本质上是布尔值,则只返回布尔值 ,例如:
isOfAge($age)
,containsCharacter($str, $char)
,canBeExecuted($pathToExe)
,validDate($date)
,sameValues($a, $b)
等。)executeSQL($sql)
,generateImage($data)
,runBackgroundProcess($str)
等。)只有当函数失败(或成功)时,你 才能返回布尔值,例如:
function createName($first, $second) {
if (strlen($first) === 0 || strlen($second) === 0) {
return false;
}
return "{$first} {$second}";
}
然后你可以使用返回值来检查它是否有效,如果有,那么你可以确定它包含一个字符串:
$name = createName("Sverri");
if ($name === false) {
die("Invalid first or second name!");
} else {
echo "Hello $name!";
}
也可以使用异常编写该函数。例外允许您停止脚本,抛出错误,捕获该错误,然后继续脚本:
function createName($first, $second) {
if (strlen($first) === 0) {
throw new \Exception("Invalid first name");
}
if (strlen($second) === 0) {
throw new \Exception("Invalid second name");
}
return "{$first} {$second}";
}
try {
echo createName("Sverri");
} catch (\Exception $e) {
die($e->getMessage());
}
一个好的经验法则是问问自己是否有意义返回一个布尔值,如果返回的值是将被使用。
在你的问题的代码中,返回任何值是没有意义的。无论如何,你不能在构造函数中返回任何东西,所以返回一些东西是没有意义的。
如果要终止没有返回值的函数,可以这样做:
function uselessFunction() {
return;
}
它将实际返回一个值null
,但是当你只想终止一个函数而不返回任何特定值时,那就是你要做的。
答案 1 :(得分:1)
我 个人 通常会在functions
中使用它们来告诉我是否发生了某些事情。
<?php
function isUsernameAvailable($username)
{
// Some db functions.
if ($db->rowCount() == 1) return false;
return true;
}
?>
因此,如果数据库中不存在提供的用户名,那么它将return true
,否则它将return false
。
用法,
if (isUsernameAvailable("test") == false) {
// Username does not exist.
} else {
// Username exists.
}