如果函數依賴於$_SESSION['some_var']
,那麼標題註釋掉以清除。你怎麼做呢?就像文字一樣,還是什麼?
甚至@param
?
如果函數依賴於$_SESSION['some_var']
,那麼標題註釋掉以清除。你怎麼做呢?就像文字一樣,還是什麼?
甚至@param
?
也許你可以使用@uses記錄超全局
哇,我從來沒有想過這件事。我甚至沒有這樣的事情。我會說在方法詳細說明如
/**
* Takes the some_var session variable and uses it to solve world hunger
* @return food
*/
對我來說最有意義。
有@global,但似乎表明創建了一個全局變量。我認爲@參數只應該引用傳遞給方法的方法參數。我知道沒有@note。
@global有兩種用法:表示一個全局變量的定義,並強調全球性的一個方法的使用。這第二個用法適合您的用例。
但是,假設你是引用$ _SESSION [「some_var」]直接在該方法中,從來沒有通過「全球」的文章表示,它可能是的phpDocumentor的@global標籤不會找到它解析方法時。因此,@uses可能是最好的選擇,作爲強調該方法對超全球性依賴性的一種手段。
[1] - http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.global.pkg.html
如果你的代碼依賴於一些全球性的,還是外部,存在於爲了工作(例如,它需要安裝sqlite的),你可以使用@use作爲Nev mentioned。
無論其...
在一般情況下,我會說這是一個不好的做法,有一個函數填入或使用全局變量(或者使用超全局變量),因爲它打破了功能的封裝,以及創建函數內部和外部代碼之間的強烈依賴性。
如果函數外部的任何代碼應該創建或訪問這些全局變量,則值應該作爲參數傳遞給該函數。
例如,而不是
function doMagic(){
if ($_SESSION['use_black_magic'] == true){ // var coming from the outside
$_SESSION['magic_results'] = 'dead chicken';
}else{
$_SESSION['magic_results'] = 'unicorn';
}
}
$_SESSION['use_black_magic'] = false;
doMagic();
echo $_SESSION['magic_results']; // (unicorn) variable set within doMagic()
應該
function doMagic($use_black_magic = true){
if ($use_black_magic == true){
return 'dead chicken';
}else{
return 'unicorn';
}
}
$magic_results = doMagic(false);
echo $magic_results; // unicorn
這樣,doMagic()不需要知道結果是什麼地方來進行存儲,也沒有在那裏找到參數值。而外部代碼,並不需要知道函數doMagic()正在做$ _SESSION變量。
只要你的代碼增長一點點,維護,共享,調試和擴展這種代碼就變成了一場噩夢......
+1謝謝你的好建議 – Mawg 2010-10-10 11:23:33
但是如果fn()返回$ _SESSION變量呢? – Mawg 2010-10-12 05:45:06
在這種情況下,我什麼都不會做 - 只需返回變量的類型(混合,字符串,數組,int,布爾等),而不用擔心變量名或它是否是超全球變量! – 2010-10-12 08:15:04