我遇到了一个奇怪的行为,在Laravel控制器中使用类型提示时我不明白。我有一个Profile控制器,它应该根据不同的参数调用两次相同的服务功能。但是,当我第二次调用该函数时,第一次调用的结果会改变。
这是我的代码;两个用户的个人资料应显示在一个页面上:
//use statements are omitted for brevity
class ProfileController extends Controller {
protected $compose_profile_service;
public function __construct(ComposeProfileService $compose_profile_service) {
$this->compose_profile_service = $compose_profile_service;
}
public function compare($user1, $user2) {
$user1_profile = $this->compose_profile_service->composeProfile($user1);
$user2_profile = $this->compose_profile_service->composeProfile($user2);
dd($user1_profile); //Problem: This dd() gives me the profile of user2 instead of user1
}
}
class ComposeProfileService {
public function composeProfile($user) {
//Get some stuff from the DB
$profile_data = $user->profile()->get();
return $profile_data;
}
}
当然,如果我dd()$ user1或$ user2高于compose函数的相应调用,则提供正确的用户。