是否可以根据版本切换PHP?

I have a function in one of my PHP scripts that relies on version 5.3 to run.

I thought that if it was in a function that didn't happen to get called when run on a server with PHP 5.2 or earlier, then it would just be ignored. However, it turns out that when that script, and the class inside it, even just gets included, then PHP bails and stops executing.

If I can avoid it, I'd like to not have to branch of different versions of my scripts dedicated to different PHP versions. Instead, it would be ideal to be able to have code that says "If PHP version 5.3, then do this, if less, then do something different."

I'Ve looked for some kind of "version switch" in the PHP manual, but didn't see one.

Is a switch function like I'm describing possible?

There are numerous ways to solve this. I prefer detecting the version and executing function.

  1. There is a function called phpversion() or constant PHP_VERSION that gives you the current php version

    Use them like

    if(phpversion() == '5.3') {
      //specific php functions
    }
    
  2. To check if the current version is newer or equal to lets say '5.3.2'. simply use:

    if (strnatcmp(phpversion(),'5.3.2') >= 0) {
        # equal or newer
    }
    else {
       # not 
    }
    
  3. Or, use version_compare to know

    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
        echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "
    ";
    }
    

Or ever more user friendly version is to use function_exists()

if (!function_exists('function_name')) {
    // the PHP version is not sufficient
}

Have a separate code file with your PHP 5.3+ code, and only include() it if you detect 5.3 or greater.

Have a look at the PHP predefined constants. They include several constants that define the running version. You could use that to decide which version of a script to load.

You might look at implementing PHP 5.3+ functions if they don't exist.

if (!function_exists('array_replace')) {
    function array_replace(....) {
        // logic here
    }
}

If you have to detect the version, you can use PHP_VERSION.