mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
⬆️ N°4770 Update to latest Symfony 3.4
This commit is contained in:
@@ -36,7 +36,7 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
{
|
||||
$this->resource = $resource;
|
||||
if (null !== $exists) {
|
||||
$this->exists = (bool) $exists;
|
||||
$this->exists = [(bool) $exists, null];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,9 +65,13 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
{
|
||||
$loaded = class_exists($this->resource, false) || interface_exists($this->resource, false) || trait_exists($this->resource, false);
|
||||
|
||||
if (null !== $exists = &self::$existsCache[(int) (0 >= $timestamp)][$this->resource]) {
|
||||
$exists = $exists || $loaded;
|
||||
} elseif (!$exists = $loaded) {
|
||||
if (null !== $exists = &self::$existsCache[$this->resource]) {
|
||||
if ($loaded) {
|
||||
$exists = [true, null];
|
||||
} elseif (0 >= $timestamp && !$exists[0] && null !== $exists[1]) {
|
||||
throw new \ReflectionException($exists[1]);
|
||||
}
|
||||
} elseif ([false, null] === $exists = [$loaded, null]) {
|
||||
if (!self::$autoloadLevel++) {
|
||||
spl_autoload_register(__CLASS__.'::throwOnRequiredClass');
|
||||
}
|
||||
@@ -75,16 +79,21 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
self::$autoloadedClass = ltrim($this->resource, '\\');
|
||||
|
||||
try {
|
||||
$exists = class_exists($this->resource) || interface_exists($this->resource, false) || trait_exists($this->resource, false);
|
||||
$exists[0] = class_exists($this->resource) || interface_exists($this->resource, false) || trait_exists($this->resource, false);
|
||||
} catch (\Exception $e) {
|
||||
$exists[1] = $e->getMessage();
|
||||
|
||||
try {
|
||||
self::throwOnRequiredClass($this->resource, $e);
|
||||
} catch (\ReflectionException $e) {
|
||||
if (0 >= $timestamp) {
|
||||
unset(self::$existsCache[1][$this->resource]);
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
$exists[1] = $e->getMessage();
|
||||
|
||||
throw $e;
|
||||
} finally {
|
||||
self::$autoloadedClass = $autoloadedClass;
|
||||
if (!--self::$autoloadLevel) {
|
||||
@@ -97,7 +106,7 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
$this->exists = $exists;
|
||||
}
|
||||
|
||||
return $this->exists xor !$exists;
|
||||
return $this->exists[0] xor !$exists[0];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -118,6 +127,10 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
public function unserialize($serialized)
|
||||
{
|
||||
list($this->resource, $this->exists) = unserialize($serialized);
|
||||
|
||||
if (\is_bool($this->exists)) {
|
||||
$this->exists = [$this->exists, null];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,7 +168,17 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
throw $previous;
|
||||
}
|
||||
|
||||
$e = new \ReflectionException(sprintf('Class "%s" not found while loading "%s".', $class, self::$autoloadedClass), 0, $previous);
|
||||
$message = sprintf('Class "%s" not found.', $class);
|
||||
|
||||
if (self::$autoloadedClass !== $class) {
|
||||
$message = substr_replace($message, sprintf(' while loading "%s"', self::$autoloadedClass), -1, 0);
|
||||
}
|
||||
|
||||
if (null !== $previous) {
|
||||
$message = $previous->getMessage();
|
||||
}
|
||||
|
||||
$e = new \ReflectionException($message, 0, $previous);
|
||||
|
||||
if (null !== $previous) {
|
||||
throw $e;
|
||||
@@ -167,12 +190,17 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
'args' => [$class],
|
||||
];
|
||||
|
||||
if (false === $i = array_search($autoloadFrame, $trace, true)) {
|
||||
if (\PHP_VERSION_ID >= 80000 && isset($trace[1])) {
|
||||
$callerFrame = $trace[1];
|
||||
$i = 2;
|
||||
} elseif (false !== $i = array_search($autoloadFrame, $trace, true)) {
|
||||
$callerFrame = $trace[++$i];
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
|
||||
if (isset($trace[++$i]['function']) && !isset($trace[$i]['class'])) {
|
||||
switch ($trace[$i]['function']) {
|
||||
if (isset($callerFrame['function']) && !isset($callerFrame['class'])) {
|
||||
switch ($callerFrame['function']) {
|
||||
case 'get_class_methods':
|
||||
case 'get_class_vars':
|
||||
case 'get_parent_class':
|
||||
@@ -191,8 +219,8 @@ class ClassExistenceResource implements SelfCheckingResourceInterface, \Serializ
|
||||
}
|
||||
|
||||
$props = [
|
||||
'file' => isset($trace[$i]['file']) ? $trace[$i]['file'] : null,
|
||||
'line' => isset($trace[$i]['line']) ? $trace[$i]['line'] : null,
|
||||
'file' => isset($callerFrame['file']) ? $callerFrame['file'] : null,
|
||||
'line' => isset($callerFrame['line']) ? $callerFrame['line'] : null,
|
||||
'trace' => \array_slice($trace, 1 + $i),
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user