如何在laravel中的同一个控制器中调用另一个方法后执行剩余的代码?

问题描述 投票:1回答:3

我正在使用laravel 5.8。我的laravel控制器有两个功能。将一个函数调用到另一个剩余代码后不执行。有没有办法执行剩余的功能体?我试过调用函数而不调用return语句函数。

public function a(){
    return "function a";
}

public function b(){
    return $this->a();
 // after the above statement remaining code does not execute
    echo "function b";
}
php laravel model-view-controller frameworks
3个回答
0
投票

return关键字为您的困惑提供了答案。返回意味着执行此行并退出该函数。当然,它不会继续使用其余的代码。这取决于你想要对第一个函数的结果做什么,但如果你想要结果,你可以将它存储在一个变量中并用于其他计算,例如这将起作用:

public function b(){
    $result = $this->a();

    echo "function b and result of a: " . $result;
}

---编辑

在下面的评论之后,检查用户是否登录的最佳方法是没有单独的功能,但你可以使用middleware实现。因此,在您的路线上,您可以将其定义为:

Route::get('endpoint', 'YourController@b')->middleware('auth');

除非他已登录,否则此中间件会将用户重定向到登录页面。

如果以上都不是您的案例的解决方案,那么我发现一个重复的问题作为您的原始here


0
投票

对PHP来说这是很正常的反应

请从这里查看“返回”手册:https://php.net/manual/en/function.return.php

它表示“......如果在函数内调用,则return语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。...”

我希望这有帮助。


0
投票

你想在函数a中使用函数b返回的数据吗?

public function a()
{
    $collection = DB::table('foo')->get();

    return $collection;
}


public function b()
{
    $data = $this->a();

    // Do something 
    dd( $data );

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