Where / When我们应该在php中使用return false

时间:2015-08-08 21:51:12

标签: php

我做了很多搜索,但无法找到任何明确的指南。请你们其中一位专家回答我的问题。 我们应该在何时/何时使用"返回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的原因。

2 个答案:

答案 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.
}