0

我想或者我更喜欢用 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

4 回答 4

1

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

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

gettype()您可以使用, is_string()(也处理其他类型)甚至类型运算符等方法在内部进行自己的检查,以确定传递的对象是否属于正确的类型instanceof

于 2012-04-18T16:17:54.660 回答
1

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

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

但这是个坏主意。不要尝试用您不熟悉的语言实现其他语言的功能。试着拥抱正确的方式,看看它是如何从那里开始的。

于 2012-04-18T16:19:05.850 回答
1

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

类型提示不能用于标量类型,例如 int 或 string。

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

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

function my_func ($mustBeAString) {
  if (!is_string($mustBeAString)) return;
  // Do stuff here
}
于 2012-04-18T16:20:48.127 回答
0

我想把这个带到桌面上:

var_dump($str);
于 2012-04-18T16:16:02.007 回答