確定這可能是一個簡單/ noobish的問題,但不能找出...PHP變量訪問
我有一個類,我至極包括在另一個PHP腳本。
所以,我打電話給例如$user->login
,但如果我想創建一個函數並使用這個變量$user
或任何其他變量定義的函數外,我需要在函數內聲明它的GLOBAL。
有沒有辦法在外部函數中聲明一次GLOBAL,而是在我需要的每個函數中聲明它?
確定這可能是一個簡單/ noobish的問題,但不能找出...PHP變量訪問
我有一個類,我至極包括在另一個PHP腳本。
所以,我打電話給例如$user->login
,但如果我想創建一個函數並使用這個變量$user
或任何其他變量定義的函數外,我需要在函數內聲明它的GLOBAL。
有沒有辦法在外部函數中聲明一次GLOBAL,而是在我需要的每個函數中聲明它?
不是,不。根據情況你可以做一些可怕的事情,但一般來說,只需使用global
即可。如果你發現這是一個問題,你可能有太多的全局變量或者因爲錯誤的原因而使用它們,你應該考慮把它們放入類中(例如)。
而且,只爲它赫克說,可怕的事情如下(在恐怖的順序排列):
user
功能,每次調用它,你需要的$user
全球user
類和一個共享的狀態是指一切靜態,因爲PHP通常沒有線程反正...如果我想創建一個函數,並使用這個變量$用戶或定義在函數外的任何其他 變量...
你不需要全局這裏。將變量傳遞給你的函數。或者將它傳遞給你的類構造函數並將其存儲在一個屬性中。然後,您可以在您班級的每種方法中訪問該房產
嗯,全局都通過$GLOBALS['var_name']
訪問,所以你可以使用$GLOBALS['user']->login
但你很快就會喜歡聲明global $user
。
然後,您將$ user添加爲您的函數的參數。
minitech,出於興趣,因爲我已經在幾個代碼庫中看到了這一點,您的第一個非建議的恐怖是什麼? –
@RickBurgess:這往往是錯誤的做法。如果沒有其他選擇,它可能是一種可以接受的風格選擇,但功能有時會更好,因爲在我看來,這通常是他們所代表的。 (但也許這不適用於像Wordpress這樣的項目?[不是所有人都同意它的理想結構:)]) – Ryan