Skip to content

Commit 8eb8a3a

Browse files
author
Marcin Stodulski
committed
psalm suggestions
1 parent a7c94ef commit 8eb8a3a

File tree

4 files changed

+26
-18
lines changed

4 files changed

+26
-18
lines changed

src/entities/Permission.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@
1414

1515
class Permission implements PermissionInterface
1616
{
17-
private ?self $parent = null;
17+
/** @var ?Permission|?PermissionInterface */
18+
private self|PermissionInterface|null $parent = null;
1819
private string $code = '';
1920
private string $name = '';
20-
public ?array $children = null;
21+
public mixed $children = null;
2122

2223
public function setCode(string $code): void
2324
{
@@ -39,12 +40,12 @@ public function setName(string $name): void
3940
$this->name = $name;
4041
}
4142

42-
public function getParent(): ?Permission
43+
public function getParent(): ?PermissionInterface
4344
{
4445
return $this->parent;
4546
}
4647

47-
public function setParent(?Permission $parent): void
48+
public function setParent(?PermissionInterface $parent): void
4849
{
4950
$this->parent = $parent;
5051
}

src/entities/Role.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
class Role implements RoleInterface
1717
{
1818
private string $code = '';
19-
private ?self $parent = null;
19+
/** @var ?Role|?RoleInterface */
20+
private self|RoleInterface|null $parent = null;
2021
private string $name = '';
2122
/** @var PermissionInterface[] $permissions */
2223
private array $permissions = [];
2324
private bool $hasAllPermissions = false;
24-
public ?array $children = null;
25+
public mixed $children = null;
2526

2627
public function getCode(): string
2728
{
@@ -48,12 +49,12 @@ public function getParent(): ?RoleInterface
4849
return $this->parent;
4950
}
5051

51-
public function setParent(?Role $parent): void
52+
public function setParent(?RoleInterface $parent): void
5253
{
5354
$this->parent = $parent;
5455
}
5556

56-
public function getPermissions()
57+
public function getPermissions(): array
5758
{
5859
return $this->permissions;
5960
}

src/interfaces/RoleInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface RoleInterface
1414
{
1515
public function getParent(): ?RoleInterface;
1616
public function getCode(): string;
17+
//the lack of the returned type allows you to program it yourself i your classes
1718
public function getPermissions();
1819
public function isHasAllPermissions(): bool;
1920
}

src/services/Authorization.php

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,20 +106,22 @@ public function getAllSubRolesAndPermissionsForRole(RoleInterface $role): array
106106
return [$rolesArray, $permissionsArray];
107107
}
108108

109-
private function getSubPermissionsForPermissions(array &$permissionsArray, ?array $permissionsTree = null) : void
109+
private function getSubPermissionsForPermissions(array &$permissionsArray, array $permissionsTree = null) : void
110110
{
111111
if (!empty($permissionsTree)) {
112-
/** @var Permission $permission */
112+
/** @var PermissionInterface $permission */
113113
foreach ($permissionsTree as $permission) {
114114
if (in_array($permission->getCode(), $permissionsArray)) {
115+
/** @var Permission $permission */
115116
if (isset($permission->children)) {
116-
/** @var Permission $childPermission */
117+
/** @var PermissionInterface $childPermission */
117118
foreach ($permission->children as $childPermission) {
118119
$permissionsArray[$childPermission->getCode()] = $childPermission->getCode();
119120
}
120121
}
121122
}
122123

124+
/** @var Permission $permission */
123125
if (isset($permission->children)) {
124126
$this->getSubPermissionsForPermissions($permissionsArray, $permission->children);
125127
}
@@ -130,15 +132,16 @@ private function getSubPermissionsForPermissions(array &$permissionsArray, ?arra
130132
private function getSubRolesCodes(array &$rolesArray, array &$permissionsArray, array $rolesTree = null) : void
131133
{
132134
if (!empty($rolesTree)) {
133-
/** @var Role $role */
135+
/** @var RoleInterface $role */
134136
foreach ($rolesTree as $role) {
135137
if (in_array($role->getCode(), $rolesArray)) {
136138
foreach ($role->getPermissions() as $permission) {
137139
$permissionsArray[$permission->getCode()] = $permission->getCode();
138140
}
139141

142+
/** @var Role $role */
140143
if (isset($role->children)) {
141-
/** @var Role $childRole */
144+
/** @var RoleInterface $childRole */
142145
foreach ($role->children as $childRole) {
143146
$rolesArray[] = $childRole->getCode();
144147
foreach ($childRole->getPermissions() as $permission) {
@@ -148,25 +151,27 @@ private function getSubRolesCodes(array &$rolesArray, array &$permissionsArray,
148151
}
149152
}
150153

154+
/** @var Role $role */
151155
if (isset($role->children)) {
152156
$this->getSubRolesCodes($rolesArray, $permissionsArray, $role->children);
153157
}
154158
}
155159
}
156160
}
157161

158-
private function buildTree(array $elements, string $parentId = null): array
162+
private function buildTree(array $elements, ?string $parentId = null): array
159163
{
160164
$branch = array();
161165

162-
/** @var Role|Permission $element */
166+
/** @var RoleInterface|PermissionInterface $element */
163167
foreach ($elements as $element) {
164-
/** @var ?Role|?Permission $parentElement */
165-
$parentElement = $element->getParent();
166-
$elementParentId = ($parentElement !== null) ? $parentElement->getCode() : null;
168+
/** @var ?Role|?Permission $elementParent */
169+
$elementParent = $element->getParent();
170+
$elementParentId = ($elementParent !== null) ? $elementParent->getCode() : null;
167171
if ($elementParentId == $parentId) {
168172
$children = $this->buildTree($elements, $element->getCode());
169173
if ($children) {
174+
/** @var Role|Permission $element */
170175
$element->children = $children;
171176
}
172177
$branch[] = $element;

0 commit comments

Comments
 (0)