php表示真实的类型

时间:2012-04-18 16:14:10

标签: php types casting

我想或者我更愿意在Php函数中指出参数的真实类型,这是可能的吗?

示例:

<?php
function test($param)
{
   echo $param;
}
$str = "hiiiii everyone";
test($str);
?>

而不是在函数测试中只放入$ param;我想要这样的东西

function test(string $param) // string is the type of the param, that can be int, long ect or an object which I had created.

使用最新版本的PHP可以做到这一点吗?

4 个答案:

答案 0 :(得分:1)

在PHP5中引入了

Type Hinting。现在,您可以通过在参数列表本身中提供该类型来强制参数为某种类型,如您的示例所示。

不幸的是,不允许使用标量对象(例如intstring)。

您可以在内部进行自己的检查,以使用gettype()is_string()(句柄other types)等方法确定传递的对象是否属于正确的类型,甚至类型operator instanceof

答案 1 :(得分:1)

没有。 PHP是一种动态类型语言;变量(以及参数)没有集合类型。您可以尝试使用gettype强制执行自己的事情,即:

function test($param) {
    if(gettype($param) != "string")
        throw new TypeException //or something
}

但这是一个坏主意。不要尝试使用您刚才使用的语言来实现其他语言的功能。试着采用正确的方法,看看它是如何从那里开始的。

答案 2 :(得分:1)

您要找的是Type Hinting。但是,如链接手册页中所述:

  

类型提示不能与标量类型一起使用,例如int或string。

这意味着不,你不能强制函数的参数为​​字符串。您可以强制它成为特定类的实例,可调用的类或数组。

如果要强制参数为字符串,请执行以下操作:

function my_func ($mustBeAString) {
  if (!is_string($mustBeAString)) return;
  // Do stuff here
}

答案 3 :(得分:0)

我想提出这个问题:

var_dump($str);