我正在使用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";
}
答案 0 :(得分: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重复的问题。
答案 1 :(得分:0)
对于PHP,这是很正常的反应
请从此处查看“返回”手册: https://php.net/manual/en/function.return.php
它说:“ ...如果从函数内部调用,则return语句立即终止当前函数的执行,并将其参数作为函数调用的值返回。...
我希望这会有所帮助。
答案 2 :(得分:0)
您要使用函数a
中从函数b
返回的数据吗?
public function a()
{
$collection = DB::table('foo')->get();
return $collection;
}
public function b()
{
$data = $this->a();
// Do something
dd( $data );
}