我想或者我更愿意在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可以做到这一点吗?
答案 0 :(得分:1)
Type Hinting。现在,您可以通过在参数列表本身中提供该类型来强制参数为某种类型,如您的示例所示。
不幸的是,不允许使用标量对象(例如int
和string
)。
您可以在内部进行自己的检查,以使用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);