php - 当调用 PHP 函数并返回某些内容时,它会停止运行下面的代码吗?

标签 php

我现在正在研究其他用户的 PHP 代码以更好地理解和学习。在下面的代码中,它是用户类的一部分。当我使用 if/else block 编写代码时,我将它们格式化为这样...

if(!$this->isLoggedIn()){
    //do stuff
}

但在下面的代码中更像是这样

if (! $this->isLoggedIn())
    return false;

同样在下面的函数中,您可以看到有几次可以有一个 RETURN 值。所以我的问题是,当 RETURN 被调用时,它之后不会运行任何代码吗?就像它在那里结束该功能的脚本一样吗?

在这种情况下,如果运行...

if (! $this->isLoggedIn())
        return false;

它是否继续运行下面的代码?


这是函数

<?PHP
private function logout($redir=true)
{
    if (! $this->isLoggedIn())
        return false;

    $this->obj->session->sess_destroy();

    if ($this->isCookieLoggedIn())
    {
        setcookie('user','', time()-36000, '/');
        setcookie('pass','', time()-36000, '/');
    }
    if (! $redir)
        return;

    header('location: '.$this->homePageUrl);
    die;
}
?>

最佳答案

是的。

当 PHP 看到返回命令时,它会停止执行并将它返回给调用它的任何对象。这包括 include、函数执行、方法执行等。

在下面,'Test' 永远不会回显:

$test = "test";
return;
echo $test;

如果您在包含的文件中,返回将停止它的执行,并且包含它的文件将完成执行

其中一个用例与您描述的类似:

public function echoString($string)
{
    if(!is_string($string))
    {
        return;
    }
    echo $string;
}

关于php - 当调用 PHP 函数并返回某些内容时,它会停止运行下面的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2090516/

相关文章:

php - 为什么 ereg ("^\d{11}$",18311111111) 是假的?

php检查2级多维数组中是否存在值

php - C PHP 扩展对象持久化

php - 使用 PHP 创建图像并向其添加 Logo

PHP:如何结合这两个类?

php - 在 PHP 中从一维数组创建二维矩阵的最有效方法

javascript - 如何通过 JustGage 使用 JSON 对象中的变量

php - 使用三元运算符和引用值的 foreach 中的意外行为

php - mySQL 连接三个表并搜索在一个表中找到的多个关键字

php - 如何将列表/菜单中的值插入mysql