为什么PHP的内置函数使用常量而不仅仅是字符串作为参数?

时间:2012-12-19 17:57:22

标签: php

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

For example

  

pad_type

     

可选参数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)

简单得多

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

3 个答案:

答案 0 :(得分:5)

键入字符串时更容易出错。使用未定义的常量将发出警告。这不仅仅是一件PHP的事情。常规API函数(即OS)通常也使用数字常量以及类似的参数。

答案 1 :(得分:1)

他们使用int ..由于区分大小写,拼写错误,解析字符串,更好的IDE,错误等,它更有效率。

如果你不喜欢常数,你可以使用int值

  str_pad($test, 10, 0, 0) == str_pad( $test, 10, 0, STR_PAD_LEFT)

答案 2 :(得分:1)

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