function Preloader::doPreload
2 calls to Preloader::doPreload()
- Preloader::preload in vendor/
symfony/ dependency-injection/ Dumper/ Preloader.php - Preloader::preloadType in vendor/
symfony/ dependency-injection/ Dumper/ Preloader.php
File
-
vendor/
symfony/ dependency-injection/ Dumper/ Preloader.php, line 71
Class
- Preloader
- @author Nicolas Grekas <p@tchwork.com>
Namespace
Symfony\Component\DependencyInjection\DumperCode
private static function doPreload(string $class, array &$preloaded) : void {
if (isset($preloaded[$class]) || \in_array($class, [
'self',
'static',
'parent',
], true)) {
return;
}
$preloaded[$class] = true;
try {
if (!class_exists($class) && !interface_exists($class, false) && !trait_exists($class, false)) {
return;
}
$r = new \ReflectionClass($class);
if ($r->isInternal()) {
return;
}
$r->getConstants();
$r->getDefaultProperties();
foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC) as $p) {
self::preloadType($p->getType(), $preloaded);
}
foreach ($r->getMethods(\ReflectionMethod::IS_PUBLIC) as $m) {
foreach ($m->getParameters() as $p) {
if ($p->isDefaultValueAvailable() && $p->isDefaultValueConstant()) {
$c = $p->getDefaultValueConstantName();
if ($i = strpos($c, '::')) {
self::doPreload(substr($c, 0, $i), $preloaded);
}
}
self::preloadType($p->getType(), $preloaded);
}
self::preloadType($m->getReturnType(), $preloaded);
}
} catch (\Throwable) {
// ignore missing classes
}
}