2009-06-23 68 views
0

我有某些訪問外部變量的PHP類方法。這些變量不作爲參數傳遞,而是直接由方法中的代碼使用。類方法代碼應該直接訪問外部變量嗎?

一種方法在配置文件中使用DEFINEd變量,其目的是爲需要它的應用程序的每個部分提供。這對我來說似乎很好。

其他方法直接訪問$ _GET var。有代碼來處理這個var沒有設置的情況,但不知怎的,這對我來說就是這樣。

這兩種情況是我應該做的還是應該有嚴格的pass-as-argument約定?

回答

1

由於您已經在使用PHP類,並且可以更改體系結構,因此應該嘗試從外部變量中儘可能分離它們。 如果您需要使其向後兼容,您還可以設置默認變量。

class Bla 
{ 
    public function blaBla($var = false) 
    { 
     if(!$var && isset($_GET)) 
      $var = $_GET; 
     // ... 
    } 
} 

$bla = new Bla(); 
$bla->blaBla(); 
$bla->blaBla($_GET); 

我不喜歡define()方法(我更喜歡像Zend Framework註冊表這樣的單例變量註冊表)。 一個大問題是你不能再改變定義了。這可能是好的或不是。我正在研究一個define()部分被加密的軟件,所以即使它們在源代碼中有「鉤子」,也沒有辦法改變它(但讓類方法使用定義而不是將它作爲一個論點......這是我眼中非常糟糕的建築)。

1

嘗試模擬(http)請求和配置文件,並通過這些模型的API訪問這些變量。

相關問題