gen_stub: simplify ClassInfo::getRegistration()

This commit is contained in:
Daniel Scherzer 2025-05-15 15:57:15 -04:00
parent 74f7ecbe04
commit 747ecce51f

View file

@ -3594,11 +3594,17 @@ class ClassInfo {
foreach ($this->propertyInfos as $property) { foreach ($this->propertyInfos as $property) {
$code .= $property->getDeclaration($allConstInfos); $code .= $property->getDeclaration($allConstInfos);
} }
// Reusable strings for wrapping conditional PHP 8.0+ code
if ($php80MinimumCompatibility) {
$php80CondStart = '';
$php80CondEnd = '';
} else {
$php80CondStart = "\n#if (PHP_VERSION_ID >= " . PHP_80_VERSION_ID . ")";
$php80CondEnd = "#endif\n";
}
if (!empty($this->attributes)) { if (!empty($this->attributes)) {
if (!$php80MinimumCompatibility) { $code .= $php80CondStart;
$code .= "\n#if (PHP_VERSION_ID >= " . PHP_80_VERSION_ID . ")";
}
foreach ($this->attributes as $key => $attribute) { foreach ($this->attributes as $key => $attribute) {
$code .= $attribute->generateCode( $code .= $attribute->generateCode(
@ -3609,45 +3615,25 @@ class ClassInfo {
); );
} }
if (!$php80MinimumCompatibility) { $code .= $php80CondEnd;
$code .= "#endif\n";
}
} }
if ($attributeInitializationCode = generateConstantAttributeInitialization($this->constInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility, $this->cond)) { if ($attributeInitializationCode = generateConstantAttributeInitialization($this->constInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility, $this->cond)) {
if (!$php80MinimumCompatibility) { $code .= $php80CondStart;
$code .= "#if (PHP_VERSION_ID >= " . PHP_80_VERSION_ID . ")";
}
$code .= "\n" . $attributeInitializationCode; $code .= "\n" . $attributeInitializationCode;
$code .= $php80CondEnd;
if (!$php80MinimumCompatibility) {
$code .= "#endif\n";
}
} }
if ($attributeInitializationCode = generatePropertyAttributeInitialization($this->propertyInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility)) { if ($attributeInitializationCode = generatePropertyAttributeInitialization($this->propertyInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility)) {
if (!$php80MinimumCompatibility) { $code .= $php80CondStart;
$code .= "#if (PHP_VERSION_ID >= " . PHP_80_VERSION_ID . ")";
}
$code .= "\n" . $attributeInitializationCode; $code .= "\n" . $attributeInitializationCode;
$code .= $php80CondEnd;
if (!$php80MinimumCompatibility) {
$code .= "#endif\n";
}
} }
if ($attributeInitializationCode = generateFunctionAttributeInitialization($this->funcInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility, $this->cond)) { if ($attributeInitializationCode = generateFunctionAttributeInitialization($this->funcInfos, $allConstInfos, $this->phpVersionIdMinimumCompatibility, $this->cond)) {
if (!$php80MinimumCompatibility) { $code .= $php80CondStart;
$code .= "#if (PHP_VERSION_ID >= " . PHP_80_VERSION_ID . ")\n";
}
$code .= "\n" . $attributeInitializationCode; $code .= "\n" . $attributeInitializationCode;
$code .= $php80CondEnd;
if (!$php80MinimumCompatibility) {
$code .= "#endif\n";
}
} }
$code .= "\n\treturn class_entry;\n"; $code .= "\n\treturn class_entry;\n";