为什么PHP中的函数是随机命名的?

似乎没有真正的模式,函数的命名方式,str_replace,strrpos,strip_tags,stripslashes只是一些。

这是为什么?

编辑 – 这不是一个“巨魔”types的职位 – 只是我觉得每次我使用的语言!

PHP语言有机地增长了一些,所以function的命名是随意的。 由于向后兼容的原因,保留了许多不同的格式。

一个轻微的题外话,除了函数命名的问题之外,语言的有机增长的另一个不幸的副作用是参数sorting中的明显不一致,例如考虑函数in_array和strstr :

bool in_array (mixed $needle, array $haystack [, bool $strict]) string strstr (string $haystack, mixed $needle [, bool $before_needle=false]) 

有趣的是,PHP似乎在内部与这些顺序一致,因为所有的string函数似乎使用$haystack, $needle而数组函数是另一种方式,但这可能需要一些习惯PHP的新手。 ExpressionEngine上有一篇很好的文章,详细讨论了这个怪癖,还讨论了PHP的bug列表 。

随着语言的成熟,有各种各样的尝试来实现一个更加严格和一致的命名约定 – 从Zend框架文档 :

函数名称必须始终以小写字母开头。 当一个函数名由多个单词组成时,每个新单词的首字母必须大写。 这通常被称为“camelCase”格式。

filterInput()

的getElementById()

稍微有点不同,从20个可能的原因PHP函数名称和参数是怪异的 :

  • PHP将API和人类粘合在一起,有时这会变得混乱

  • PHPfunction已经在很多情况下被开发出来,有时甚至是醉汉

  • PHP函数命名algorithm仍然是一个秘密,不能被破解

  • PHPselect给人们一些有趣的抱怨/博客/笑声

  • PHP还有其他问题需要解决

从历史上看,许多函数都是直接映射到C对象的,所以PHP中很多命名和参数sorting的怪异原因都是由于这个原因造成的。

PHP的贡献者通常会帮助语言满足他们自己的需求,所以这种语言有机地增长,有时也是没有纪律的。 它的受欢迎程度也意味着它一直努力保持其整个生命周期的向后兼容性,这意味着即使在被弃用之后,关于该语言的糟糕决定仍然存在。

向后兼容性和缺乏命名空间,加上语言stream失。

因为这种语言在过去的14年中从“个人主页”发展成为最受欢迎的网站实现语言之一。 没有人计划所有这些function; 他们根据需要一次添加一个。

答案是Evolution或者Unintelligent Design。 我不确定哪个;)

为了向后兼容许多语言的转速

这似乎有点巨魔。 但是,这是为了向后兼容。

PHP6将解决这些问题,并提供完整的UTF-8支持。

PHP是一种“老”,快速增长的开源脚本语言。 命名只是一个悠久的历史……没有像Java背后的SUN背后的“学术”公司,这将控制命名…

最初,PHP仅仅是一种没有面向对象支持(PHP 3)的脚本语言,所以PHP中使用的函数名称大多受到PERL语法的启发。 但PHP 5有许多像reflection,types提示,接口,访问修饰符和列表的OOfunction。 这些新function中的大部分都受到了JAVA的启发。 例如; 在PHP和JAVA中实现接口和inheritance类是一样的。 所以,大多数具有命名风格和约定的新function都是基于JAVA的。 人们可以称之为一种纯粹的脚本语言的PHP演变为一种有力的OO语言。

我真的不明白它的重要性。 语法是语法。 有许多人类语言,英语为一个,它不遵循任何特定的模式,但我们无论如何学习。 这是所有关于知道你的语法,而不是猜测。