我需要在函数中返回true和false吗?

问题描述 投票:-1回答:2

我是否需要在php中提供真正的错误返回功能,或者只是真正的回报?

如果我有一个像这样的小功能:

<?php
$name =  $_POST['name'];

function nameCheck($name)
{
if (strlen($name)>1 && strlen($name)<40)
{
    return true;
}   
    else
    {
        return false; // do I need this?
    }
}

然后我在这里检查它是否是假的:

if (isset($_POST['submit']))
{
    if (!nameCheck($name))
    {
        echo '<script type="text/javascript"> alert("Fail name!")</script>';
        return false;
    }
}
?>

if (!nameCheck($name))我不会只需要在原始函数中返回一个真值,好像它在这里没有返回true,它会返回false吗?

php function return
2个回答
7
投票

你实际上不需要返回两者,因为如果在null中转换为布尔值,php会将false解释为if,就像你在这里做的那样。

也就是说,在这种情况下,您可以明确地说明它并返回两者。如果您这样做,您可以编写更多更清洁的功能:

 function nameCheck($name)
 {
     return strlen($name) > 1 && strlen($name) < 40;
 }

strlen($name) > 1 && strlen($name) < 40的值是boolean,即:答案是真还是假。所以,我们只需要简单地返回这个计算的输出......

让我们思考一下机器将如何处理这段代码:

if(2>1) return true;

它做的第一件事是计算括号:

if(true) return true;

考虑到这一点,我们可以简单地说:

return 2>1;

在上面的函数中使用了相同的逻辑


3
投票

PHP不是typed language,因此它不会强制您返回值(例如,当参数满足条件时,您只能返回true

但是,如评论中所述,这是一个坏主意,因为当您尝试访问return值(或不需要的值)时它将为null

认为这是一个typed language:你的函数将返回一个boolean,你将被迫返回truefalse取决于条件。所以你的第一个例子很好,你应该保持这种语法;你可以通过默认返回false使它更轻,并使用条件只返回true

function nameCheck( $name ) {
    if( strlen( $name ) > 1 && strlen( $name ) < 40 ) { 
        return true;
    }   

    return false;
}

编辑:cronoklee's answer也是重构代码的好方法

© www.soinside.com 2019 - 2024. All rights reserved.