Skip to content

Commit 6fe1357

Browse files
authored
Support AOP hot update (#5528)
1 parent 8465440 commit 6fe1357

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

src/Annotation/Scanner.php

+2-18
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,9 @@ public function scan(array $classMap = [], string $proxyDir = ''): array
131131
$classMap = array_merge($reflectionClassMap, $classMap);
132132
$proxyManager = new ProxyManager($classMap, $proxyDir);
133133
$proxies = $proxyManager->getProxies();
134+
$aspectClasses = $proxyManager->getAspectClasses();
134135

135-
$this->putCache($this->path, serialize([$data, $proxies]));
136+
$this->putCache($this->path, serialize([$data, $proxies, $aspectClasses]));
136137
exit;
137138
}
138139

@@ -173,23 +174,6 @@ protected function deserializeCachedScanData(array $collectors): array
173174
return $proxies;
174175
}
175176

176-
protected function deserializeCachedCollectors(array $collectors): int
177-
{
178-
if (! file_exists($this->path)) {
179-
return 0;
180-
}
181-
182-
$data = unserialize(file_get_contents($this->path));
183-
foreach ($data as $collector => $deserialized) {
184-
/** @var MetadataCollector $collector */
185-
if (in_array($collector, $collectors)) {
186-
$collector::deserialize($deserialized);
187-
}
188-
}
189-
190-
return $this->filesystem->lastModified($this->path);
191-
}
192-
193177
/**
194178
* @param ReflectionClass[] $reflections
195179
*/

src/Aop/ProxyManager.php

+14
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ public function getProxyDir(): string
4848
return $this->proxyDir;
4949
}
5050

51+
public function getAspectClasses(): array
52+
{
53+
$aspectClasses = [];
54+
$classesAspects = AspectCollector::get('classes', []);
55+
foreach ($classesAspects as $aspect => $rules) {
56+
foreach ($rules as $rule) {
57+
if (isset($this->proxies[$rule])) {
58+
$aspectClasses[$aspect][$rule] = $this->proxies[$rule];
59+
}
60+
}
61+
}
62+
return $aspectClasses;
63+
}
64+
5165
protected function generateProxyFiles(array $proxies = []): array
5266
{
5367
$proxyFiles = [];

0 commit comments

Comments
 (0)