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