PHP源代码中三个大括号的含义是什么?

24

我刚从php.net下载了PHP的完整源代码(PHP 5.4.0 [tar.bz2])。 他们经常使用三个花括号,如下所示(以下代码片段提取自ext / ctype / ctype.c.)

/* {{{ proto bool ctype_digit(mixed c)
   Checks for numeric character(s) */
 static PHP_FUNCTION(ctype_digit)
 {
  CTYPE(isdigit);
 }
/* }}} */

有人知道为什么要同时使用这三个大括号吗?


2
它们被某些编辑器用于“折叠”代码块,这样只有注释行中的文本可见,实际代码被“折叠”隐藏起来。 - Marc B
我认为仅仅为了折叠而允许添加三个花括号是不合适的。 - Mohammed H
3
在注释块中,他们可以“允许”其中的任何内容。 :) - Narf
参见:https://github.com/php/php-src/blob/master/CODING_STANDARDS#L215 - Jari Keinänen
1个回答

33

它们是vim折叠标记,它们可以使vim中三个大括号之间的文本易于折叠和展开,在所示例子中替换展开状态和折叠状态:

...

/* {{{ proto bool ctype_digit(mixed c)
   Checks for numeric character(s) */
static PHP_FUNCTION(ctype_digit)
{
    CTYPE(isdigit);
}
/* }}} */

...

仅仅是

...

/* {{{ proto bool ctype_digit(mixed c)

...

如果你查看文件末尾,你通常会找到这样一个代码块:

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 * vim600: sw=4 ts=4 fdm=marker
 * vim<600: sw=4 ts=4
 */

这是另一个更明显的指示这些评论与vim有关。


1
我是Now的忠实支持者,尤其喜欢折叠功能! - Mohammed H
我简直无法在vim中没有折叠功能!自2011年以来,zf、c、zd、zi和zi已经深深地烙印在我的肌肉记忆中。 - Pierre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接