Laravel:在控制器中使用两次时类型提示类的奇怪行为

时间:2016-01-11 20:15:54

标签: php laravel laravel-5 type-hinting

我遇到了一个奇怪的行为,在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函数的相应调用,则提供正确的用户。

0 个答案:

没有答案