@@ -1524,24 +1524,23 @@ public function getFunctionEntry(): string {
1524
1524
$ code .= "#if (PHP_VERSION_ID >= " . PHP_84_VERSION_ID . ") \n" ;
1525
1525
}
1526
1526
1527
- $ php84AndAboveFlags = array_slice ($ flagsByPhpVersions , 5 , null , true );
1528
1527
$ docComment = $ this ->exposedDocComment ? '" ' . $ this ->exposedDocComment ->escape () . '" ' : "NULL " ;
1529
1528
$ framelessFuncInfosName = !empty ($ this ->framelessFunctionInfos ) ? $ this ->getFramelessFunctionInfosName () : "NULL " ;
1530
1529
1531
1530
$ code .= generateVersionDependentFlagCode (
1532
1531
"\tZEND_RAW_FENTRY( $ zendName, $ name, $ argInfoName, %s, $ framelessFuncInfosName, $ docComment) \n" ,
1533
- $ php84AndAboveFlags ,
1532
+ $ flagsByPhpVersions ,
1534
1533
PHP_84_VERSION_ID
1535
1534
);
1536
1535
1537
1536
if (!$ php84MinimumCompatibility ) {
1538
1537
$ code .= "#else \n" ;
1539
1538
1540
- $ flags = array_slice ($ flagsByPhpVersions , 0 , 4 , true );
1541
1539
$ code .= generateVersionDependentFlagCode (
1542
1540
"\tZEND_RAW_FENTRY( $ zendName, $ name, $ argInfoName, %s) \n" ,
1543
- $ flags ,
1544
- $ this ->minimumPhpVersionIdCompatibility
1541
+ $ flagsByPhpVersions ,
1542
+ $ this ->minimumPhpVersionIdCompatibility ,
1543
+ PHP_83_VERSION_ID
1545
1544
);
1546
1545
1547
1546
$ code .= "#endif \n" ;
@@ -5363,8 +5362,12 @@ function generateOptimizerInfo(array $funcMap): string {
5363
5362
* @param array<int, string[]> $flagsByPhpVersions
5364
5363
* @return string
5365
5364
*/
5366
- function generateVersionDependentFlagCode (string $ codeTemplate , array $ flagsByPhpVersions , ?int $ phpVersionIdMinimumCompatibility ): string
5367
- {
5365
+ function generateVersionDependentFlagCode (
5366
+ string $ codeTemplate ,
5367
+ array $ flagsByPhpVersions ,
5368
+ ?int $ phpVersionIdMinimumCompatibility ,
5369
+ ?int $ phpVersionIdMaxCompatibility = null
5370
+ ): string {
5368
5371
$ phpVersions = ALL_PHP_VERSION_IDS ;
5369
5372
sort ($ phpVersions );
5370
5373
$ currentPhpVersion = end ($ phpVersions );
@@ -5378,13 +5381,23 @@ function generateVersionDependentFlagCode(string $codeTemplate, array $flagsByPh
5378
5381
return sprintf ($ codeTemplate , implode ("| " , $ flagsByPhpVersions [$ currentPhpVersion ]));
5379
5382
}
5380
5383
5381
- // Remove flags which depend on a PHP version below the minimally supported one
5382
5384
ksort ($ flagsByPhpVersions );
5383
- $ index = array_search ($ phpVersionIdMinimumCompatibility , array_keys ($ flagsByPhpVersions ));
5384
- if ($ index === false ) {
5385
- throw new Exception ("Missing version dependent flags for PHP version ID \"$ phpVersionIdMinimumCompatibility \"" );
5385
+ if ($ phpVersionIdMinimumCompatibility !== null ) {
5386
+ // Remove flags which depend on a PHP version below the minimally supported one
5387
+ $ index = array_search ($ phpVersionIdMinimumCompatibility , array_keys ($ flagsByPhpVersions ));
5388
+ if ($ index === false ) {
5389
+ throw new Exception ("Missing version dependent flags for PHP version ID \"$ phpVersionIdMinimumCompatibility \"" );
5390
+ }
5391
+ $ flagsByPhpVersions = array_slice ($ flagsByPhpVersions , $ index , null , true );
5392
+ }
5393
+ if ($ phpVersionIdMaxCompatibility !== null ) {
5394
+ // Remove flags which depend on a PHP version above the maximally supported one
5395
+ $ index = array_search ($ phpVersionIdMaxCompatibility , array_keys ($ flagsByPhpVersions ));
5396
+ if ($ index === false ) {
5397
+ throw new Exception ("Missing version dependent flags for PHP version ID \"$ phpVersionIdMaxCompatibility \"" );
5398
+ }
5399
+ $ flagsByPhpVersions = array_slice ($ flagsByPhpVersions , 0 , $ index , true );
5386
5400
}
5387
- $ flagsByPhpVersions = array_slice ($ flagsByPhpVersions , $ index , null , true );
5388
5401
5389
5402
// Remove empty version-specific flags
5390
5403
$ flagsByPhpVersions = array_filter ($ flagsByPhpVersions );
0 commit comments