我想了解Zenphoto插件的以下代码:
$plugin_is_filter = 5|ADMIN_PLUGIN|THEME_PLUGIN;
该片段与背景脱节。这只是背后的理念。
5|ADMIN_PLUGIN|THEME_PLUGIN
权限是否按位使用?
什么时候使用有用?
感谢任何提示,链接。
答案 0 :(得分:1)
是的,这是bitwise OR的一个例子。
当您有兴趣将多个布尔标志打包为单个整数时,通常使用按位运算。按位运算符允许您操作字节的各个位,这意味着8位字节可用于存储8个不同的布尔值。当使用整个8位字节存储单个二进制“是”或“否”被认为是浪费时,这是一种 有用的技术。
今天,几乎没有理由更喜欢在PHP中使用这种比特包(特别是5
类似于{{1}})而不是简单的配置数组。这种技术几乎没有为PHP代码增加任何价值,增加了复杂性并降低了可维护性,从而无法实现真正的收益。我会对生成的任何新的PHP代码持怀疑态度,这些代码以这种方式使用按位标志。
答案 1 :(得分:1)
当您需要在一个变量中提供一组布尔选项时,位域很有用。例如,PHP允许您设置错误报告,如下所示:
error_reporting(E_ERROR | E_WARNING | E_PARSE);
在二进制文件中,这些常量具有以下值:
E_ERROR 0001
E_WARNING 0010
E_PARSE 0100
如果您将一组选项组合在一起,您将能够在一个字段中表达设置:
E_ERROR | E_WARNING | E_PARSE 0111
然后,您可以使用AND检查正在设置的选项:
if ($option & E_ERROR === E_ERROR) {
// E_ERROR is set, do something
}
答案 2 :(得分:0)
变量$ plugin_is_filter用于标记要加载的插件。从本质上讲,它被视为对应于枚举集插件的数组位。有关更多信息,请参阅以下链接。
这解释了ADMIN_PLUGIN and THEME_PLUGIN are。
在页面中搜索“$ plugin_is_filter”,以获得有关如何使用此变量的简要说明。
http://www.zenphoto.org/news/zenphoto-plugin-architecture
我希望这会有所帮助。