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

Skip to content

Commit bb6571e

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

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
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
}

src/Symfony/Component/Debug/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
2424
},
2525
"require-dev": {
26-
"symfony/class-loader": "~2.2",
26+
"symfony/class-loader": "~2.2|~3.0.0",
2727
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0",
2828
"symfony/http-foundation": "~2.1|~3.0.0"
2929
},

0 commit comments

Comments
 (0)
0