我正在使用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";
}
return
关键字为您的困惑提供了答案。返回意味着执行此行并退出该函数。当然,它不会继续使用其余的代码。这取决于你想要对第一个函数的结果做什么,但如果你想要结果,你可以将它存储在一个变量中并用于其他计算,例如这将起作用:
public function b(){
$result = $this->a();
echo "function b and result of a: " . $result;
}
---编辑
在下面的评论之后,检查用户是否登录的最佳方法是没有单独的功能,但你可以使用middleware实现。因此,在您的路线上,您可以将其定义为:
Route::get('endpoint', 'YourController@b')->middleware('auth');
除非他已登录,否则此中间件会将用户重定向到登录页面。
如果以上都不是您的案例的解决方案,那么我发现一个重复的问题作为您的原始here。
对PHP来说这是很正常的反应
请从这里查看“返回”手册:https://php.net/manual/en/function.return.php
它表示“......如果在函数内调用,则return语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。...”
我希望这有帮助。
你想在函数a
中使用函数b
返回的数据吗?
public function a()
{
$collection = DB::table('foo')->get();
return $collection;
}
public function b()
{
$data = $this->a();
// Do something
dd( $data );
}