Skip to content

Commit a98497b

Browse files
Merge branch '3.3' into 3.4
* 3.3: Removed useless argument $definition Fix comment [Config] Fix checking class existence freshness bumped Symfony version to 3.3.7 updated VERSION for 3.3.6 updated CHANGELOG for 3.3.6 Bump minimal PHP version to ^5.5.9|>=7.0.8
2 parents 11c2b64 + 6ac0cc1 commit a98497b

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

Resource/ClassExistenceResource.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function isFresh($timestamp)
6565
{
6666
$loaded = class_exists($this->resource, false) || interface_exists($this->resource, false) || trait_exists($this->resource, false);
6767

68-
if (null !== $exists = &self::$existsCache[$this->resource]) {
68+
if (null !== $exists = &self::$existsCache[(int) (0 >= $timestamp)][$this->resource]) {
6969
$exists = $exists || $loaded;
7070
} elseif (!$exists = $loaded) {
7171
if (!self::$autoloadLevel++) {
@@ -76,6 +76,11 @@ public function isFresh($timestamp)
7676

7777
try {
7878
$exists = class_exists($this->resource) || interface_exists($this->resource, false) || trait_exists($this->resource, false);
79+
} catch (\ReflectionException $e) {
80+
if (0 >= $timestamp) {
81+
unset(self::$existsCache[1][$this->resource]);
82+
throw $e;
83+
}
7984
} finally {
8085
self::$autoloadedClass = $autoloadedClass;
8186
if (!--self::$autoloadLevel) {

Tests/Fixtures/BadParent.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Symfony\Component\Config\Tests\Fixtures;
4+
5+
class BadParent extends MissingParent
6+
{
7+
}

Tests/Resource/ClassExistenceResourceTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Config\Resource\ClassExistenceResource;
1616
use Symfony\Component\Config\Tests\Fixtures\Resource\ConditionalClass;
17+
use Symfony\Component\Config\Tests\Fixtures\BadParent;
1718

1819
class ClassExistenceResourceTest extends TestCase
1920
{
@@ -74,6 +75,22 @@ public function testExistsKo()
7475
}
7576
}
7677

78+
public function testBadParentWithTimestamp()
79+
{
80+
$res = new ClassExistenceResource(BadParent::class, false);
81+
$this->assertTrue($res->isFresh(time()));
82+
}
83+
84+
/**
85+
* @expectedException \ReflectionException
86+
* @expectedExceptionMessage Class Symfony\Component\Config\Tests\Fixtures\MissingParent not found
87+
*/
88+
public function testBadParentWithNoTimestamp()
89+
{
90+
$res = new ClassExistenceResource(BadParent::class, false);
91+
$res->isFresh(0);
92+
}
93+
7794
public function testConditionalClass()
7895
{
7996
$res = new ClassExistenceResource(ConditionalClass::class, false);

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
}
1717
],
1818
"require": {
19-
"php": ">=5.5.9",
19+
"php": "^5.5.9|>=7.0.8",
2020
"symfony/filesystem": "~2.8|~3.0|~4.0"
2121
},
2222
"require-dev": {

0 commit comments

Comments
 (0)