8000 [Debug] generalize deprecated interfaces tracking · symfony/symfony@e40a987 · GitHub
[go: up one dir, main page]

Skip to content

Commit e40a987

Browse files
[Debug] generalize deprecated interfaces tracking
1 parent 9509fb7 commit e40a987

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/Symfony/Component/Debug/DebugClassLoader.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -179,16 +179,19 @@ public function loadClass($class)
179179

180180
if (preg_match('#\n \* @deprecated (.*?)\r?\n \*(?: @|/$)#s', $refl->getDocComment(), $notice)) {
181181
self::$deprecated[$name] = preg_replace('#\s*\r?\n \* +#', ' ', $notice[1]);
182-
} elseif (0 !== strpos($name, 'Symfony\\')) {
182+
} else {
183+
$len = 1 + (strpos($name, '\\', 1 + strpos($name, '\\')) ?: strpos($name, '_'));
183184
$parent = $refl->getParentClass();
184185

185-
if ($parent && isset(self::$deprecated[$parent->name])) {
186-
trigger_error(sprintf('The %s class extends %s that is deprecated %s', $name, $parent->name, self::$deprecated[$parent->name]), E_USER_DEPRECATED);
187-
}
186+
if (!$parent || $len < 2 || strncmp($name, $parent, $len)) {
187+
if ($parent && isset(self::$deprecated[$parent->name])) {
188+
trigger_error(sprintf('The %s class extends %s that is deprecated %s', $name, $parent->name, self::$deprecated[$parent->name]), E_USER_DEPRECATED);
189+
}
188190

189-
foreach ($refl->getInterfaceNames() as $interface) {
190-
if (isset(self::$deprecated[$interface]) && !($parent && $parent->implementsInterface($interface))) {
191-
trigger_error(sprintf('The %s %s %s that is deprecated %s', $name, $refl->isInterface() ? 'interface extends' : 'class implements', $interface, self::$deprecated[$interface]), E_USER_DEPRECATED);
191+
foreach ($refl->getInterfaceNames() as $interface) {
192+
if (isset(self::$deprecated[$interface]) && ($len < 2 || strncmp($name, $interface, $len)) && !($parent && $parent->implementsInterface($interface))) {
193+
trigger_error(sprintf('The %s %s %s that is deprecated %s', $name, $refl->isInterface() ? 'interface extends' : 'class implements', $interface, self::$deprecated[$interface]), E_USER_DEPRECATED);
194+
}
192195
}
193196
}
194197
}

0 commit comments

Comments
 (0)
0