我有一个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