6

我注意到 PHP 的内部函数从不将字符串用于预定义或限制值,只使用常量。

例如

垫型

可选参数 pad_type 可以是 STR_PAD_RIGHT、STR_PAD_LEFT 或 STR_PAD_BOTH。如果未指定 pad_type,则假定为 STR_PAD_RIGHT。

这里不使用字符串作为参数的原因是什么?

str_pad($test, 10, 0, 'left')似乎比简单得多str_pad( $test, 10, 0, STR_PAD_LEFT)

(这更像是一个元问题。我希望可以在这里问。)

4

3 回答 3

5

输入字符串时更容易出错。使用未定义的常量会引发警告。这不仅仅是 PHP 的事情。常规 API 函数(即操作系统的)通常也使用数字常量作为这样的参数。

于 2012-12-19T18:01:11.367 回答
1

他们使用int.. 并且由于区分大小写、拼写错误、解析字符串、更适合 IDE、错误等,它更有效。

如果您不喜欢常量,则可以使用 int 值

  str_pad($test, 10, 0, 0) == str_pad( $test, 10, 0, STR_PAD_LEFT)
于 2012-12-19T18:01:33.160 回答
1

请注意,$pad_type参数中的类型实际上是int。传递整数比传递(然后比较)字符串要快得多。因此,您无需将数字传递给函数来告诉它要做什么,而是传递相应的常量,从而使您的代码更清晰。如果 PHP 开发人员想要将其更改为传递字符串而不是整数,只要您使用常量,他们就可以在不破坏任何代码的情况下做到这一点。

于 2012-12-19T18:03:32.867 回答