【发布时间】:2012-02-17 16:32:21
【问题描述】:
请原谅我的新手。在基于 ASP.Net 的网站上工作时,我记得看到一些方法可以接受不同数量的参数。具体来说,它们会做不同的事情,具体取决于传递给它们的参数数量。
例如:
Email.sendEmail(address,subject,body);
会做一些不同的事情:
Email.sendEmail(address,bccaddresses,subject,body);
PHP 中的方法可以做类似的事情吗?这东西叫什么?还是我完全记错了什么?
【问题讨论】:
-
这称为method/function overloading。如果没有涉及 func_get_args 或混淆变量名的变通办法,PHP 本身就没有此功能。嘘:-(
-
@cbuckley PHP 似乎有更好的重载方式。 . . stackoverflow.com/a/9332030/798818
-
重载 != 可选参数。这允许不同的数量,但必须在函数中处理数据类型的检查,而不是显式定义多个函数签名。
-
@cbuckley 就是这样!我以为它被称为“重载”,但由于某种原因,我找不到一个很好的例子。
-
我同意 Tim 的观点,因为它还允许在不破坏 E_STRICT 合规性的情况下进行扩展。
标签: php methods overloading