我有某些訪問外部變量的PHP類方法。這些變量不作爲參數傳遞,而是直接由方法中的代碼使用。類方法代碼應該直接訪問外部變量嗎?
一種方法在配置文件中使用DEFINEd變量,其目的是爲需要它的應用程序的每個部分提供。這對我來說似乎很好。
其他方法直接訪問$ _GET var。有代碼來處理這個var沒有設置的情況,但不知怎的,這對我來說就是這樣。
這兩種情況是我應該做的還是應該有嚴格的pass-as-argument約定?
我有某些訪問外部變量的PHP類方法。這些變量不作爲參數傳遞,而是直接由方法中的代碼使用。類方法代碼應該直接訪問外部變量嗎?
一種方法在配置文件中使用DEFINEd變量,其目的是爲需要它的應用程序的每個部分提供。這對我來說似乎很好。
其他方法直接訪問$ _GET var。有代碼來處理這個var沒有設置的情況,但不知怎的,這對我來說就是這樣。
這兩種情況是我應該做的還是應該有嚴格的pass-as-argument約定?
由於您已經在使用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()部分被加密的軟件,所以即使它們在源代碼中有「鉤子」,也沒有辦法改變它(但讓類方法使用定義而不是將它作爲一個論點......這是我眼中非常糟糕的建築)。
嘗試模擬(http)請求和配置文件,並通過這些模型的API訪問這些變量。