Skip to content

Commit d3b78bd

Browse files
authored
Merge pull request #338 from WyriHaximus/only-allow-existing-objects-as-events
Only allow existing objects as events
2 parents 6048bd3 + 14426c3 commit d3b78bd

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

src/Composer/Collector.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use WyriHaximus\Composer\GenerativePluginTooling\ItemCollector;
1515

1616
use function array_map;
17+
use function class_exists;
1718
use function in_array;
1819

1920
final class Collector implements ItemCollector
@@ -56,6 +57,10 @@ public function collect(ReflectionClass $class): iterable
5657
}
5758

5859
foreach ($eventTypes as $eventType) {
60+
if (! class_exists((string) $eventType)) {
61+
continue;
62+
}
63+
5964
yield new Item(
6065
(string) $eventType,
6166
$class->getName(),

src/Dummy/Listener.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public function handle(Event $event): void
2424
($this->handler)($event);
2525
}
2626

27+
public function thisShouldNotBeDetected(string $event): void
28+
{
29+
($this->handler)($event);
30+
}
31+
2732
public function handleBoth(Event|stdClass $event): void
2833
{
2934
($this->handler)($event);

tests/Composer/InstallerTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ public function write($messages, bool $newline = true, int $verbosity = self::NO
155155
self::assertStringContainsStringIgnoringCase('\'\WyriHaximus\Broadcast\Dummy\Listener::handleBothStaticly\'', $fileContents);
156156
self::assertStringContainsStringIgnoringCase('fn (\WyriHaximus\Broadcast\Dummy\Event $event) => await(async(fn (\WyriHaximus\Broadcast\Dummy\Event $event) => $this->container()->get(\WyriHaximus\Broadcast\Dummy\AsyncListener::class)->handle' . "\n" . ' ($event))($event))', $fileContents);
157157
self::assertStringContainsStringIgnoringCase('static fn (\WyriHaximus\Broadcast\Dummy\Event $event) => await(async(static fn (\WyriHaximus\Broadcast\Dummy\Event $event) => \WyriHaximus\Broadcast\Dummy\AsyncListener::handleStatic ($event))($event))', $fileContents);
158+
159+
self::assertStringNotContainsStringIgnoringCase('\string::class => [', $fileContents);
160+
self::assertStringNotContainsStringIgnoringCase('thisShouldNotBeDetected', $fileContents);
158161
}
159162

160163
private function recurseCopy(string $src, string $dst): void

0 commit comments

Comments
 (0)