如何在PHP中指定参数的类型

时间:2013-01-28 00:45:49

标签: php casting

  

可能重复:
  PHP type-hinting to primitive values?

说,我创建了一个名为

的函数
retrieveCount($count){
   return ++$count;
}

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

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

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

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

谢谢

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

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

查看类似的函数strvalfloatval ...

答案 2 :(得分: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 documentation中没有任何强制转换的整数。