PHP 命名规范?

11

我正在编写一些代码,但有点烦恼的是PHP有时使用下划线调用函数,而有时则作为一个单词。这是怎么回事?

例如:

int strlen(string $str)

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

我希望有一个合理的解释,并想知道其中的原因。


这是一个真正的问题吗?我的意思是,我们能不能不打战争就知道答案? - Zirak
4
欢迎来到遗留代码世界。这个问题没有确切答案,只有抱怨和争吵。我认为这只是整个语言的症结所在。 - deceze
1
没有规定也是一种规定。 - Yet Another Geek
1
问题虽然有趣,但是很主观,只会导致争论。请投票关闭。 - Ibu
3
我不知道为什么人们一直抱怨 PHP 缺乏惯例,因为实际上有很多惯例可供选择! - deceze
显示剩余3条评论
2个回答

6

引用自:http://tnx.nl/php.html

PHP函数命名不一致
在下划线(_)与无下划线之间没有明显的系统:

underscore               no underscore:

stream_get_line          readline
disk_free_space          diskfreespace
is_object                isset
mcal_day_of_week         jddayofweek
set_error_handler        setlocale
snmp_get_quick_print     snmpget
get_browser              getallheaders
base64_encode            urlencode
image_type_to_mime_type  imagetypes
msql_num_fields          mysql_numfields
php_uname                phpversion
strip_tags               stripslashes
bind_textdomain_codeset  bindtextdomain
cal_to_jd                gregoriantojd
str_rot13                strpos

谢谢Anne,这太赞了 :) 尽管只有负面评论,或者那里的负面评论占主导地位,但它确实为我服务过很多次。 - hummingBird
浏览了那个列表...很多声明都像是10年前的。 - binaryLV

1
欢迎来到php。这是一个经常讨论的话题。 底线是,克服这个问题的唯一方法就是使用一个以php为中心的IDE/编辑器,它会提供建议。 顺便说一下,这只是问题的一半,你还会遇到函数参数顺序相反的情况。 比如

(mixed $needle , array $haystack)

然后

(array $haystack , string $needle)

所以要么适应它,要么离开,这就是座右铭。


哈哈哈 :)... 是的,那个也是赢家。我对这个还算应付自如... 我已经用 PHP 编程几年了... 但这一直是一个难题。有时候也会让我感到沮丧。 - hummingBird
implode(string $glue, array $pieces)implode(array $pieces, string $glue)怎么样? ;) - binaryLV

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