2012-04-28 60 views
1

我有一個依賴版本5.3運行的PHP腳本中的函數。是否可以在基於版本的PHP中進行切換?

我認爲,如果它是在PHP 5.2或更低版本的服務器上運行時發生的函數中發生的,那麼它將被忽略。但是,事實證明,當該腳本及其內部的類甚至被包含時,PHP將保留並停止執行。

如果我能避免它,我想不必爲不同版本的我的腳本分支專用於不同的PHP版本。相反,如果能夠有代碼說「如果PHP版本5.3,那麼做這個,如果更少,然後做一些不同的事情」是理想的。

我在PHP手冊中找過某種「版本切換」,但沒有看到。

是否像我描述的開關功能可能?

回答

3

有很多方法可以解決這個問題。我更喜歡檢測版本和執行功能。

  1. 有一個名爲給你當前的PHP版本phpversion()或恆定PHP_VERSION功能

    使用他們喜歡

    if(phpversion() == '5.3') { 
        //specific php functions 
    } 
    
  2. 要檢查,如果當前的版本較新或等於讓說'5.3.2'。簡單地使用:

    if (strnatcmp(phpversion(),'5.3.2') >= 0) { 
        # equal or newer 
    } 
    else { 
        # not 
    } 
    
  3. 或者,使用version_compare知道

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

或者更加用戶友好的版本是使用function_exists()

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

['version_compare'](http://us.php.net/manual/en/function.version-compare.php)怎麼樣? – DCoder 2012-04-28 04:44:53

+0

@DCoder,忘記了..更新;) – Starx 2012-04-28 04:48:58

+1

在PHP 5.2.7+中還有'PHP_VERSION_ID',比簡單比較'PHP_VERSION'更容易使用。例如。 'if(PHP_VERSION_ID> = 50300)'。參考:http://php.net/phpversion#example-536 – MrWhite 2015-04-02 12:11:17

1

如果您檢測到5.3或更高,請使用您的PHP 5.3+代碼創建單獨的代碼文件,並且只有include()

+0

感謝您的回覆,但我在問題中特別說了我寧願不支持我的腳本的不同版本。我已經意識到我可以創建一個單獨的代碼文件,但是如果我能得到它,我正在尋找一個代碼內解決方案。 – Questioner 2012-04-28 04:49:03

0

你可以看看如何實現PHP 5.3+函數,如果它們不存在。

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

如果你必須檢測版本,你可以使用PHP_VERSION

相關問題