private/Get-PhpBuildDetails.ps1

function Get-PhpBuildDetails {
    <#
    .SYNOPSIS
        Get the PHP build Details.
    .PARAMETER Config
        Extension Configuration
    #>

    [OutputType()]
    param (
        [Parameter(Mandatory = $true, Position=0, HelpMessage='Configuration for the extension')]
        [PSCustomObject] $Config
    )
    begin {
    }
    process {
        if($Config.php_version -eq 'master' -or $Config.php_version -eq '8.5') {
            $baseUrl = $fallbackBaseUrl = "https://github.com/shivammathur/php-builder-windows/releases/download/master"
            $PhpSemver = 'master'
        } else {
            foreach($releaseState in @("releases", "qa")) {
                $baseUrl = "https://downloads.php.net/~windows/$releaseState"
                $fallbackBaseUrl = "https://downloads.php.net/~windows/$releaseState/archives"
                $releases = Get-File -Url "$baseUrl/releases.json" | ConvertFrom-Json
                $phpSemver = $releases.$($Config.php_version).version
                if($null -eq $phpSemver) {
                    $phpSemver = (Get-File -Url $fallbackBaseUrl).Links |
                            Where-Object { $_.href -match "php-($($Config.php_version).[0-9]+).*" } |
                            ForEach-Object { $matches[1] } |
                            Sort-Object { [System.Version]$_ } -Descending |
                            Select-Object -First 1
                }
                if($null -ne $phpSemver) {
                    break
                }
            }
        }
        return [PSCustomObject]@{
            phpSemver = $phpSemver
            baseUrl = $baseUrl
            fallbackBaseUrl = $fallbackBaseUrl
        }
    }
    end {
    }
}