Skip to content

Commit 929861c

Browse files
committed
优化事件
1 parent 135423c commit 929861c

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

src/larke/admin/Events/Action.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,22 @@ public function trigger($event, ...$var): void
2424

2525
$listeners = $this->listener[$event] ?? [];
2626

27-
if (str_contains($event, '.')) {
27+
if (str_contains($event, '.*')) {
28+
$needSort = false;
2829
[$prefix, $event] = explode('.', $event, 2);
2930

3031
foreach ($this->listener as $e => $listener) {
3132
if ($event == '*' && str_starts_with($e, $prefix . '.')) {
3233
$listeners = array_merge($listeners, $listener);
34+
$needSort = true;
3335
}
3436
}
37+
38+
if ($needSort) {
39+
$listeners = $this->arraySort($listeners, 'sort');
40+
}
3541
}
3642

37-
$listeners = $this->arraySort($listeners, 'sort');
38-
3943
foreach ($listeners as $key => $listener) {
4044
$this->dispatch($listener['listener'], $var);
4145
}

src/larke/admin/Events/Event.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,18 @@ public function observe($observer, string $prefix = '', int $sort = 1)
104104
*/
105105
public function listen(string $event, $listener, int $sort = 1)
106106
{
107+
if (! isset($this->listener[$event])) {
108+
$this->listener[$event] = [];
109+
}
110+
107111
$this->listener[$event][] = [
108112
'listener' => $listener,
109113
'sort' => $sort,
110114
'key' => $this->filterBuildUniqueId($listener),
111115
];
112116

117+
$this->listener[$event] = $this->arraySort($this->listener[$event], 'sort');
118+
113119
return $this;
114120
}
115121

src/larke/admin/Events/Filter.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,24 @@ public function trigger($event, $params = null, ...$var)
2424
$event = $event::class;
2525
}
2626

27-
$result = [];
2827
$listeners = $this->listener[$event] ?? [];
2928

30-
if (str_contains($event, '.')) {
29+
if (str_contains($event, '.*')) {
30+
$needSort = false;
3131
[$prefix, $event] = explode('.', $event, 2);
3232

3333
foreach ($this->listener as $e => $listener) {
3434
if ($event == '*' && str_starts_with($e, $prefix . '.')) {
3535
$listeners = array_merge($listeners, $listener);
36+
$needSort = true;
3637
}
3738
}
39+
40+
if ($needSort) {
41+
$listeners = $this->arraySort($listeners, 'sort');
42+
}
3843
}
3944

40-
$listeners = $this->arraySort($listeners, 'sort');
41-
4245
$tmp = $var;
4346
$result = $params;
4447
foreach ($listeners as $key => $listener) {

src/larke/resources/config/larkeadmin.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
'name' => "LarkeAdmin",
77
'name_mini' => "Larke",
88
'logo' => "<b>Larke</b> admin",
9-
'release' => "20240723",
10-
'version' => "2.0.5",
9+
'release' => "20240728",
10+
'version' => "2.0.6",
1111
],
1212

1313
// 是否使用 https 方式

0 commit comments

Comments
 (0)