【问题标题】:PHP - Why some string function name without underscore e.g strlen? [duplicate]PHP - 为什么某些字符串函数名称不带下划线,例如 strlen? [复制]
【发布时间】:2019-04-26 06:19:50
【问题描述】:

我注意到一些 PHP 字符串函数使用了下划线,而有些则没有

这里是例子

strlen()
strtolower()
strtoupper()
strpos()

等等。

带下划线的字符串函数

str_replace()
str_word_count()
str_split()
str_repeat()

等等。

我希望那些函数名应该是这样的

str_len()
str_to_lower()
str_to_upper()
str_pos()

【问题讨论】:

  • 我认为这是因为 PHP 不是一门严格的语言,并且多年来有许多不同的开发人员致力于它,这导致了这种不一致。
  • 是的......我真的没有看到任何明显的行为组可以解释这两种命名方案。
  • 他们确实有一些别名,如sizeofcount,所以也许他们会使用它来获得更统一的函数名称。或者不。
  • 到底重要吗?你猜猜鬃毛的功能是什么?还是查一下?

标签: php string function str-replace strlen


【解决方案1】:

这些函数中的许多都以它们所模仿的 C 函数命名。这不是特定于字符串函数的;许多其他基本的 PHP 函数都是从 C 编程接口复制而来的:printf()fopen()fnmatch()...

strlen() 就是一个很好的例子。 C 函数在功能上与 PHP 函数相同。

strpos() 并没有出现在 C 标准库中,但 strstr()strchr() 出现;命名模式非常清晰。 (strstr()strpos() 之间的区别在 C 中无关紧要,因为返回指向子字符串的指针没有任何开销。)

C 中也没有 strtoupper()strtolower(),但有一系列函数可以将字符串转换为各种类型的数字(strtol()strtof()strtoull() 等),这可能是这些名字的灵感来源。

顺便说一句,旧的 MySQL 扩展同样是 MySQL C API 的直接复制品,甚至包括 mysql_real_escape_string() 的名称等令人毛骨悚然的细节。

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多