我想了解一下Zenphoto插件中的以下代码:
$plugin_is_filter = 5|ADMIN_PLUGIN|THEME_PLUGIN;
该代码段与上下文脱节。它只是关于它背后的想法。
5|ADMIN_PLUGIN|THEME_PLUGIN权限是否使用位权限?
什么时候使用它有用呢?
谢谢你的提示,链接。
发布于 2012-08-21 01:15:29
当您需要在一个变量中提供一组布尔选项时,位字段非常有用。例如,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然后,您可以使用和检查正在设置的选项:
if ($option & E_ERROR === E_ERROR) {
// E_ERROR is set, do something
}发布于 2012-08-21 01:13:33
是的,这就是bitwise OR的一个例子。
当您对将多个布尔标志打包为单个整数感兴趣时,通常会使用按位操作。按位运算符允许您操作字节的各个位,这意味着一个8位字节可用于存储8个不同的布尔值。当使用一个完整的8位字节来存储一个单独的二进制“是”或“否”被认为是浪费时,这是一种有用的技术。
今天,几乎没有理由在PHP语言中使用这种位打包(特别是使用像5这样的magic number ),而不是使用简单的配置数组。这是一种技术,它几乎没有给PHP代码增加任何价值,增加了复杂性,降低了可维护性,却没有真正的好处。我对任何以这种方式使用位标志的新PHP代码都持怀疑态度。
发布于 2012-08-21 01:27:08
变量$plugin_is_filter用于标记要加载的插件。本质上,它被视为与枚举的集合插件相对应的数组位。有关更多信息,请参阅以下链接。
这就解释了什么是ADMIN_PLUGIN and THEME_PLUGIN are。
在页面中搜索“$plugin_is_filter”,以获得有关如何使用此变量的简要说明。
http://www.zenphoto.org/news/zenphoto-plugin-architecture
我希望这能帮到你。
https://stackoverflow.com/questions/12042025
复制相似问题