我有一個PHP類,其中有一個方法將一個實例打印到一個表格行中。有時候,我希望在開始時不用名稱就打印出一行,有時我希望打印所有的行項目,等等。處理PHP位標誌
我已決定使用位標誌以使代碼更具可讀性,但標誌的處理看起來很可怕。這是我第一次使用位標誌。
我已經在類的頂部定義瞭如下標誌;
define('BAT_TABLE_ROW_PLAYER', 1);
define('BAT_TABLE_ROW_NOPLAYER', 2);
define('BAT_TABLE_ROW_FIELD', 4);
define('BAT_TABLE_ROW_ALL', 7);
使用標誌的函數看起來像這樣;
function tableLine($flag=BAT_TABLE_ROW_ALL) {
if(in_array($flag,[1,3,5,7]))
// just return player cell
if(in_array($flag,[2,3,6,7]))
// return all other cells (except fielding)
if(in_array($flag,[4,5,6,7]))
// return fielding cells
return $rtn;
}
所以你可以看到,如果BAT_TABLE_ROW_ALL
設置,所有的選項按計劃執行。
問題是,如果我因爲某些原因添加了另一個標誌(因此將其設置爲8,並將ALL設置爲15--儘管這樣會很平常),但我必須重寫整個函數。這不可能是正確的。
有沒有更好的方法來編寫上面的函數,所以我所要做的就是更新標誌定義,然後將額外的標誌執行添加到函數中?
我明白了。所以'&'基本上就像'$ flag'上給定標誌定義的掩碼一樣。一旦您知道正確的搜索字詞,您就可以獲得其他谷歌搜索結果,這真是太棒了! – worldofjr 2014-10-08 00:54:24