Compare commits

..

1 Commits

Author SHA1 Message Date
Fabien Potencier d31a6b4c5c Merge branch '2.8' into 3.1
* 2.8:
  [ClassLoader] Use only forward slashes in generated class map
  ensure the proper context for nested validations
  bug #20653 [WebProfilerBundle] Profiler includes ghost panels
2016-11-29 09:26:03 +01:00
7 changed files with 7 additions and 99 deletions
+6 -36
View File
@@ -98,38 +98,6 @@ class ClassCollectionLoader
$declared = array_merge(get_declared_classes(), get_declared_interfaces(), get_declared_traits());
}
$files = self::inline($classes, $cache, $declared);
if ($autoReload) {
// save the resources
self::writeCacheFile($metadata, serialize(array(array_values($files), $classes)));
}
}
/**
* Generates a file where classes and their parents are inlined.
*
* @param array $classes An array of classes to load
* @param string $cache The file where classes are inlined
* @param array $excluded An array of classes that won't be inlined
*
* @return array The source map of inlined classes, with classes as keys and files as values
*
* @throws \RuntimeException When class can't be loaded
*/
public static function inline($classes, $cache, array $excluded)
{
$declared = array();
foreach (self::getOrderedClasses($excluded) as $class) {
$declared[$class->getName()] = true;
}
// cache the core classes
$cacheDir = dirname($cache);
if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777, true) && !is_dir($cacheDir)) {
throw new \RuntimeException(sprintf('Class Collection Loader was not able to create directory "%s"', $cacheDir));
}
$spacesRegex = '(?:\s*+(?:(?:\#|//)[^\n]*+\n|/\*(?:(?<!\*/).)++)?+)*+';
$dontInlineRegex = <<<REGEX
'(?:
@@ -144,12 +112,11 @@ REGEX;
$files = array();
$content = '';
foreach (self::getOrderedClasses($classes) as $class) {
if (isset($declared[$class->getName()])) {
if (in_array($class->getName(), $declared)) {
continue;
}
$declared[$class->getName()] = true;
$files[$class->getName()] = $file = $class->getFileName();
$files[] = $file = $class->getFileName();
$c = file_get_contents($file);
if (preg_match($dontInlineRegex, $c)) {
@@ -185,7 +152,10 @@ REGEX;
}
self::writeCacheFile($cache, '<?php '.$content);
return $files;
if ($autoReload) {
// save the resources
self::writeCacheFile($metadata, serialize(array($files, $classes)));
}
}
/**
-34
View File
@@ -12,8 +12,6 @@
namespace Symfony\Component\ClassLoader\Tests;
use Symfony\Component\ClassLoader\ClassCollectionLoader;
use Symfony\Component\ClassLoader\Tests\Fixtures\DeclaredClass;
use Symfony\Component\ClassLoader\Tests\Fixtures\WarmedClass;
require_once __DIR__.'/Fixtures/ClassesWithParents/GInterface.php';
require_once __DIR__.'/Fixtures/ClassesWithParents/CInterface.php';
@@ -280,36 +278,4 @@ EOF
unlink($file);
}
public function testInline()
{
$this->assertTrue(class_exists(WarmedClass::class, true));
@unlink($cache = sys_get_temp_dir().'/inline.php');
$classes = array(WarmedClass::class);
$excluded = array(DeclaredClass::class);
ClassCollectionLoader::inline($classes, $cache, $excluded);
$this->assertSame(<<<'EOTXT'
<?php
namespace Symfony\Component\ClassLoader\Tests\Fixtures
{
interface WarmedInterface
{
}
}
namespace Symfony\Component\ClassLoader\Tests\Fixtures
{
class WarmedClass extends DeclaredClass implements WarmedInterface
{
}
}
EOTXT
, file_get_contents($cache)
);
unlink($cache);
}
}
-7
View File
@@ -1,7 +0,0 @@
<?php
namespace Symfony\Component\ClassLoader\Tests\Fixtures;
class DeclaredClass implements DeclaredInterface
{
}
-7
View File
@@ -1,7 +0,0 @@
<?php
namespace Symfony\Component\ClassLoader\Tests\Fixtures;
interface DeclaredInterface
{
}
-7
View File
@@ -1,7 +0,0 @@
<?php
namespace Symfony\Component\ClassLoader\Tests\Fixtures;
class WarmedClass extends DeclaredClass implements WarmedInterface
{
}
-7
View File
@@ -1,7 +0,0 @@
<?php
namespace Symfony\Component\ClassLoader\Tests\Fixtures;
interface WarmedInterface
{
}
+1 -1
View File
@@ -34,7 +34,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "3.2-dev"
"dev-master": "3.1-dev"
}
}
}