使用 Laravel Spark,如果我想为configureTeamForNewUser
.Spark::interact
#File: spark/src/Interactions/Auth/Register.php
Spark::interact(self::class.'@configureTeamForNewUser', [$request, $user]);
即框架调用configureTeamForNewUser
using Spark::interact
,这意味着我可以Spark::swap
。
但是,如果我看一下configureTemForNewUser
方法本身
#File: spark/src/Interactions/Auth/Register.php
public function configureTeamForNewUser(RegisterRequest $request, $user)
{
if ($invitation = $request->invitation()) {
Spark::interact(AddTeamMember::class, [$invitation->team, $user]);
self::$team = $invitation->team;
$invitation->delete();
} elseif (Spark::onlyTeamPlans()) {
self::$team = Spark::interact(CreateTeam::class, [
$user, ['name' => $request->team, 'slug' => $request->team_slug]
]);
}
$user->currentTeam();
}
此方法为私有$team
类属性分配一个值。我的理解是,如果我使用Spark::swap
我的回调而不是原始方法被调用。初步测试证实了这一点。但是,由于我的回调不能设置$team
,这意味着我的回调会以一种会破坏其他火花功能的方式改变系统的行为。
以上是对系统的正确理解吗?或者我错过了什么,并且可以swap
在另一个函数调用中(以某种方式调用原来的configureTeamForNewUser
)?