2011-05-21 71 views
1

我有一個全局的「functions.php」文件,其中包含在我的網站中使用的函數。PHP的基本(noobish)概念問題:常量與功能

在性能,效率等方面 - 直接調用其中一個函數還是將它們定義爲常量並調用常量會更好? (或者有什麼關係呢?)

<?php echo site_root(); ?> 

<?php echo SITEROOT; ?> 

感謝

+0

不要以這種方式隱藏你的代碼。你是否建議利用常量作爲函數的名字?你不會看到這樣做的性能增益。但是如果你想輸出不改變的字符串,那麼這是常量的正確使用。 – daganh 2011-05-21 10:00:06

回答

8

這取決於什麼site_root()正是這麼做。

  • 如果它所做的是一樣的東西從陣列讀取並返回一個字符串很簡單,那不要緊,你是否使用功能,或一個常數。使用最適合你的方法。

  • 如果函數做了一些像數據庫查找那樣昂貴的代碼,確實明智的做法是隻調用一次,將結果存儲在一個常量中,然後在代碼中使用它。

+0

有道理,謝謝 – Adam 2011-05-22 15:56:00

+0

對不起,在一個非常古老的線程中回答,但我只是想知道 - 不是使用函數一個矯枉過正的比較只是存儲在const值?由於在使用define()方法之前引入'const ABC =「abc」'構造常量的速度會更快 – 2014-01-15 10:30:00

2

亞當,另一個選擇是使用靜態瓦爾作爲高速緩存的一個函數裏:

function site_root() { 
    static $result = null; 
    if (!is_null($result)) { 
     return $result; 
    } 
    // code for defining and returning result only once 
} 

您可以使用常數,只有當你的代碼總是需要他們。如果你的代碼只在這裏或那裏使用它,那麼不要使用它們,因爲代碼會定義它們會減慢主代碼的速度。