-1

可能重复:
原始值的 PHP 类型提示?

说,我创建了一个名为

retrieveCount($count){
   return ++$count;
}

只是一个简单的例子。如何将函数设置为仅接受整数类型?在 Java 或其他语言中,我们有:

public int retrieveCount(int count){
   return ++count;
}

有没有办法在 PHP 中做同样的事情?我在文档中读到,对于 OOP,PHP 具有复杂结构的类型提示,例如对象、数组、接口等,但没有标量类型(int、string)。

真的是这样,我们不能指定类型吗?

谢谢

4

3 回答 3

1

PHP 没有直接的标量类型提示可能性。但是您可以通过检查函数内部的类型并触发适当的错误来模拟它:

function retrieveCount( $count )
{
    if( !is_int( $count ) )
    {
        // I believe E_USER_WARNING is the appropriate error level
        // equivalent to what PHP issues itself on type hint errors
        trigger_error(
            'Argument 1 passed to retrieveCount() must be an integer',
            E_USER_WARNING
        );
    }

    return ++$count;
}
于 2013-01-28T00:57:42.243 回答
0

没有直接的方法可以做到这一点,但是您可以像这样在函数中强制类型:

function retrieveCount($count) {
    $count = intval($count);
    return ++$count;
};

查看类似的功能strvalfloatval...

于 2013-01-28T00:50:33.580 回答
0

为了确保函数接收整数类型,您需要像这样调用is_int()

function retriveCount( $count ){
  if( !is_int( $count ) )
    return 0; // or whatever you want errors to return

  return ++$count;
}

或者,如果您希望能够处理形成为不一定是数字的数字的字符串,您可以执行以下操作:

function retriveCount( $count ){
  if( (int)$count != $count )
    return 0; // or err value

  return ++$count; // will be integer type
}

在Type Juggling 文档中阅读为什么返回值将是一个没有任何强制转换的整数。

于 2013-01-28T00:57:58.633 回答