php – 如何强制参数为整数/字符串 - 代码日志

php – 如何强制参数为整数/字符串

我希望我的函数可以期望字符串/整数或者合适,如:

warning: preg_match() expects parameter 2 to be string

但是对于这个功能

public function setImage($target, $source_path, integer $width, integer $height){...

我得到:

Argument 4 passed to My_Helper_Image::setImage() must be an instance of integer, integer given

但:

function(array $expectsArray)

按照我的预期工作,我将如何实现与整数和字符串相同的效果?

大更新

PHP 7现在supports Scalar Type Hinting

function increment(int $number) {
     return $number++;
}
Scalar TypeHints are available as of PHP 7

Scalar type declarations come in two flavours: coercive (default) and strict. The following types for parameters can now be enforced (either coercively or strictly): strings (string), integers (int), floating-point numbers (float), and booleans (bool). They augment the other types introduced in PHP 5: class names, interfaces, array and callable.

PHP7之前没有标量的类型提示。 PHP 5.3.99 did have scalar typehints,但如果他们留下来,那么他们还没有最后确定,那么他们将如何工作。

然而,在PHP7之前,还有一些强制执行标量参数的选项。

有几个is_ *函数让你这样做,例如

> is_int — Find whether the type of a variable is integer
> is_string — Find whether the type of a variable is string
> more

要提出警告,你会使用

> trigger_error — Generates a user-level error/warning/notice message

使用$ errorType的E_USER_WARNING。

function setInteger($integer)
{
    if (FALSE === is_int($integer)) {
        trigger_error('setInteger expected Argument 1 to be Integer', E_USER_WARNING);
    }
    // do something with $integer
}

替代

如果您想拼命使用标量类型提示,请查看

> http://edorian.github.io/2010-03-30-typehints-hack-for-literal-values-in-php/

这显示了一种通过自定义错误处理程序强制执行标量类型提示的技术。

http://stackoverflow.com/questions/5430126/how-to-force-arguments-to-be-integer-string

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:php – 如何强制参数为整数/字符串