Merge branch '2.7'
* 2.7: made the assets optional [Debug] generalize deprecated interfaces tracking Conflicts: src/Symfony/Component/Debug/composer.json
This commit is contained in:
commit
10c411ac6b
@ -49,7 +49,6 @@ class FrameworkExtension extends Extension
|
||||
$loader->load('web.xml');
|
||||
$loader->load('services.xml');
|
||||
$loader->load('fragment_renderer.xml');
|
||||
$loader->load('assets.xml');
|
||||
|
||||
// A translator must always be registered (as support is included by
|
||||
// default in the Form component). If disabled, an identity translator
|
||||
@ -562,6 +561,8 @@ class FrameworkExtension extends Extension
|
||||
*/
|
||||
private function registerAssetsConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||
{
|
||||
$loader->load('assets.xml');
|
||||
|
||||
$defaultVersion = $this->createVersion($container, $config['version'], $config['version_format'], '_default');
|
||||
|
||||
$defaultPackage = $this->createPackageDefinition($config['base_path'], $config['base_urls'], $defaultVersion);
|
||||
|
@ -4,7 +4,6 @@
|
||||
<meta charset="UTF-8" />
|
||||
<title>{% block title %}Welcome!{% endblock %}</title>
|
||||
{% block stylesheets %}{% endblock %}
|
||||
<link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
|
||||
</head>
|
||||
<body>
|
||||
{% block body %}{% endblock %}
|
||||
|
@ -74,6 +74,10 @@ class ExtensionPass implements CompilerPassInterface
|
||||
$container->setDefinition('twig.loader.filesystem', $loader);
|
||||
}
|
||||
|
||||
if ($container->has('assets.packages')) {
|
||||
$loader->addTag('twig.extension');
|
||||
}
|
||||
|
||||
if (method_exists('Symfony\Bridge\Twig\AppVariable', 'setContainer')) {
|
||||
// we are on Symfony <3.0, where the setContainer method exists
|
||||
$container->getDefinition('twig.app_variable')->addMethodCall('setContainer', array(new Reference('service_container')));
|
||||
|
@ -85,7 +85,6 @@
|
||||
</service>
|
||||
|
||||
<service id="twig.extension.assets" class="Symfony\Bridge\Twig\Extension\AssetExtension" public="false">
|
||||
<tag name="twig.extension" />
|
||||
<argument type="service" id="assets.packages" />
|
||||
</service>
|
||||
|
||||
|
@ -179,16 +179,19 @@ class DebugClassLoader
|
||||
|
||||
if (preg_match('#\n \* @deprecated (.*?)\r?\n \*(?: @|/$)#s', $refl->getDocComment(), $notice)) {
|
||||
self::$deprecated[$name] = preg_replace('#\s*\r?\n \* +#', ' ', $notice[1]);
|
||||
} elseif (0 !== strpos($name, 'Symfony\\')) {
|
||||
} else {
|
||||
$len = 1 + (strpos($name, '\\', 1 + strpos($name, '\\')) ?: strpos($name, '_'));
|
||||
$parent = $refl->getParentClass();
|
||||
|
||||
if ($parent && isset(self::$deprecated[$parent->name])) {
|
||||
trigger_error(sprintf('The %s class extends %s that is deprecated %s', $name, $parent->name, self::$deprecated[$parent->name]), E_USER_DEPRECATED);
|
||||
}
|
||||
if (!$parent || $len < 2 || strncmp($name, $parent, $len)) {
|
||||
if ($parent && isset(self::$deprecated[$parent->name]) && ($len < 2 || strncmp($name, $parent->name, $len))) {
|
||||
trigger_error(sprintf('The %s class extends %s that is deprecated %s', $name, $parent->name, self::$deprecated[$parent->name]), E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
foreach ($refl->getInterfaceNames() as $interface) {
|
||||
if (isset(self::$deprecated[$interface]) && !($parent && $parent->implementsInterface($interface))) {
|
||||
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);
|
||||
foreach ($refl->getInterfaceNames() as $interface) {
|
||||
if (isset(self::$deprecated[$interface]) && ($len < 2 || strncmp($name, $interface, $len)) && !($parent && $parent->implementsInterface($interface))) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -186,6 +186,28 @@ class DebugClassLoaderTest extends \PHPUnit_Framework_TestCase
|
||||
array('DeprecatedParentClass', 'DeprecatedClass', 'extends'),
|
||||
);
|
||||
}
|
||||
|
||||
public function testDeprecatedSuperInSameNamespace()
|
||||
{
|
||||
set_error_handler('var_dump', 0);
|
||||
$e = error_reporting(0);
|
||||
trigger_error('', E_USER_NOTICE);
|
||||
|
||||
class_exists(__NAMESPACE__.'\Fixtures\ExtendsDeprecatedParent', true);
|
||||
|
||||
error_reporting($e);
|
||||
restore_error_handler();
|
||||
|
||||
$lastError = error_get_last();
|
||||
unset($lastError['file'], $lastError['line']);
|
||||
|
||||
$xError = array(
|
||||
'type' => E_USER_NOTICE,
|
||||
'message' => '',
|
||||
);
|
||||
|
||||
$this->assertSame($xError, $lastError);
|
||||
}
|
||||
}
|
||||
|
||||
class ClassLoader
|
||||
@ -217,6 +239,8 @@ class ClassLoader
|
||||
return __DIR__.'/Fixtures/notPsr0Bis.php';
|
||||
} elseif (__NAMESPACE__.'\Fixtures\DeprecatedInterface' === $class) {
|
||||
return __DIR__.'/Fixtures/DeprecatedInterface.php';
|
||||
} elseif (__NAMESPACE__.'\Fixtures\ExtendsDeprecatedParent' === $class) {
|
||||
eval('namespace '.__NAMESPACE__.'\Fixtures; class ExtendsDeprecatedParent extends DeprecatedClass {}');
|
||||
} elseif ('Test\\'.__NAMESPACE__.'\DeprecatedParentClass' === $class) {
|
||||
eval('namespace Test\\'.__NAMESPACE__.'; class DeprecatedParentClass extends \\'.__NAMESPACE__.'\Fixtures\DeprecatedClass {}');
|
||||
} elseif ('Test\\'.__NAMESPACE__.'\DeprecatedInterfaceClass' === $class) {
|
||||
|
Reference in New Issue
Block a user