使用Laravel星火,如果我想在爲configureTeamForNewUser
一個新的實現交換,起初看起來它是可能的,因爲Spark::interact
通話這裏Laravel星火,交換/交互,以及私有變量
#File: spark/src/Interactions/Auth/Register.php
Spark::interact(self::class.'@configureTeamForNewUser', [$request, $user]);
即框架調用configureTeamForNewUser
使用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
)?
感謝您的關注。但是,我似乎沒有正確地強調我所問的。當您的示例運行時,代碼中的self :: $團隊引用將引用提供程序類變量,而不引用AddTeamMember類中的靜態類$ team變量。這意味着當AddTeamMember中的其他方法嘗試訪問self :: $ team,self :: $團隊不會被設置。 –