Fixed the DebugClassLoader compatibility with eval()'d code on Darwin

This commit is contained in:
Pascal Luna 2019-02-23 23:39:04 +00:00 committed by Nicolas Grekas
parent 9202d9ed3e
commit 6c2aa2446d
3 changed files with 21 additions and 0 deletions

View File

@ -390,6 +390,11 @@ class DebugClassLoader
$dirFiles = self::$darwinCache[$kDir][1];
if (!isset($dirFiles[$file]) && ') : eval()\'d code' === substr($file, -17)) {
// Get the file name from "file_name.php(123) : eval()'d code"
$file = substr($file, 0, strrpos($file, '(', -17));
}
if (isset($dirFiles[$file])) {
return $real .= $dirFiles[$file];
}

View File

@ -385,6 +385,11 @@ class DebugClassLoaderTest extends TestCase
$this->assertSame([], $deprecations);
}
public function testEvaluatedCode()
{
$this->assertTrue(class_exists(__NAMESPACE__.'\Fixtures\DefinitionInEvaluatedCode', true));
}
}
class ClassLoader

View File

@ -0,0 +1,11 @@
<?php
namespace Symfony\Component\Debug\Tests\Fixtures;
eval('
namespace Symfony\Component\Debug\Tests\Fixtures;
class DefinitionInEvaluatedCode
{
}
');