PHP函数别名 - 有什么优势?

时间:2014-04-11 06:35:31

标签: php api standard-library

PHP有一个有趣的功能,您可以使用count() sizeof()来查看数组的长度。同样,您可以使用joinimplode将数组转换为字符串。它使您可以灵活地使用strchrstrstrchoprtrimexitdieis_integeris_int等执行完全相同的操作。

在其他常见的编程语言(如Java或C或Python)中是否存在此别名的示例?这个功能的目的究竟是什么?

我能想到的最接近的事情是Python如何让你使用import somemodule vs from somemodule import a, b, c...,甚至可以from math import sqrt as mysquarerootfunction

然而,这在Python中具有明显的优势,因为您可以将使用实平方根的程序更改为复杂的sqrt(),例如将from math import *更改为from cmath import *

2 个答案:

答案 0 :(得分:2)

PHP Manual Appendix中有关于函数别名的解释以及包含别名的所有函数的列表:

  

PHP中有很多功能你可以用更多来调用   不止一个名字。在某些情况下,其中没有首选名称   多个,is_int()和is_integer()同样好。   但是,由于API,有些函数会更改名称   清理或其他原因,旧名称只保留   用于向后兼容的别名。使用它通常是个坏主意   这些别名,因为它们可能会被淘汰或过时   重命名,这将导致不可移植的脚本。提供此列表   帮助那些想要将旧脚本升级为更新语法的人。

答案 1 :(得分:1)

历史悠久的大多数语言和API都至少有一些别名,从两种方式来说,使用不同的名称完全相同。然而,对于完全相同的操作,具有两个不同的名称并不常见。我无法在我经常使用的语言中找到任何示例(PHP不是其中之一)。

常见的是 1.较旧的方式被更新的方式取代,并且两者都可用。 C函数printf()和C ++流<<就是这样的。事实上,大多数C标准库已被C ++标准库所取代,这意味着有很多机会以两种不同的方式做同样的事情。 Java和.NET也充满了例子。 一个简单的函数有一个更复杂的表亲,可以做所有简单的事情。 C函数atod()和strtof()就是这样的。 Windows API中有许多函数,其名称类似于SomeFunction()和SomeFunctionEx()。

要回答您的其他问题,唯一的目的是向后兼容。在他们正确的思想中,没有人为单个函数设计一个具有两个名称的语言。这些事情恰好随着语言的发展而发生,PHP现在已经很老了。