Skip to content

Commit 4c32cdc

Browse files
drbyteimhayatunnabi
andcommitted
Performance enhancement: Reduce unnecessary container resolution calls
Reduced unnecessary container resolution calls Manually merged in from #2884 Credit: @imhayatunnabi -- Co-authored-by: Hayatunnabi Nabil <[email protected]>
1 parent ea7d29c commit 4c32cdc

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

src/Models/Permission.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,13 @@ public static function create(array $attributes = [])
5757
*/
5858
public function roles(): BelongsToMany
5959
{
60+
$registrar = app(PermissionRegistrar::class);
61+
6062
return $this->belongsToMany(
6163
config('permission.models.role'),
6264
config('permission.table_names.role_has_permissions'),
63-
app(PermissionRegistrar::class)->pivotPermission,
64-
app(PermissionRegistrar::class)->pivotRole
65+
$registrar->pivotPermission,
66+
$registrar->pivotRole
6567
);
6668
}
6769

src/Models/Role.php

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,19 @@ public static function create(array $attributes = [])
4545
$attributes['guard_name'] ??= Guard::getDefaultName(static::class);
4646

4747
$params = ['name' => $attributes['name'], 'guard_name' => $attributes['guard_name']];
48-
if (app(PermissionRegistrar::class)->teams) {
49-
$teamsKey = app(PermissionRegistrar::class)->teamsKey;
48+
49+
$registrar = app(PermissionRegistrar::class);
50+
51+
if ($registrar->teams) {
52+
$teamsKey = $registrar->teamsKey;
5053

5154
if (array_key_exists($teamsKey, $attributes)) {
5255
$params[$teamsKey] = $attributes[$teamsKey];
5356
} else {
5457
$attributes[$teamsKey] = getPermissionsTeamId();
5558
}
5659
}
60+
5761
if (static::findByParam($params)) {
5862
throw RoleAlreadyExists::create($attributes['name'], $attributes['guard_name']);
5963
}
@@ -66,11 +70,13 @@ public static function create(array $attributes = [])
6670
*/
6771
public function permissions(): BelongsToMany
6872
{
73+
$registrar = app(PermissionRegistrar::class);
74+
6975
return $this->belongsToMany(
7076
config('permission.models.permission'),
7177
config('permission.table_names.role_has_permissions'),
72-
app(PermissionRegistrar::class)->pivotRole,
73-
app(PermissionRegistrar::class)->pivotPermission
78+
$registrar->pivotRole,
79+
$registrar->pivotPermission
7480
);
7581
}
7682

@@ -135,10 +141,17 @@ public static function findOrCreate(string $name, ?string $guardName = null): Ro
135141
{
136142
$guardName ??= Guard::getDefaultName(static::class);
137143

138-
$role = static::findByParam(['name' => $name, 'guard_name' => $guardName]);
144+
$attributes = ['name' => $name, 'guard_name' => $guardName];
145+
146+
$role = static::findByParam($attributes);
139147

140148
if (! $role) {
141-
return static::query()->create(['name' => $name, 'guard_name' => $guardName] + (app(PermissionRegistrar::class)->teams ? [app(PermissionRegistrar::class)->teamsKey => getPermissionsTeamId()] : []));
149+
$registrar = app(PermissionRegistrar::class);
150+
if ($registrar->teams) {
151+
$teamsKey = $registrar->teamsKey;
152+
$attributes[$teamsKey] = getPermissionsTeamId();
153+
}
154+
return static::query()->create($attributes);
142155
}
143156

144157
return $role;
@@ -153,8 +166,10 @@ protected static function findByParam(array $params = []): ?RoleContract
153166
{
154167
$query = static::query();
155168

156-
if (app(PermissionRegistrar::class)->teams) {
157-
$teamsKey = app(PermissionRegistrar::class)->teamsKey;
169+
$registrar = app(PermissionRegistrar::class);
170+
171+
if ($registrar->teams) {
172+
$teamsKey = $registrar->teamsKey;
158173

159174
$query->where(fn ($q) => $q->whereNull($teamsKey)
160175
->orWhere($teamsKey, $params[$teamsKey] ?? getPermissionsTeamId())

0 commit comments

Comments
 (0)