2012-04-18 42 views
0

我想或者我会更喜欢在一个带有Php的函数中指出参数的实际类型,这可能吗?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

@Jonathan桑普森:谢谢:-) – Dale 2012-04-18 16:16:35

+1

[文件](http://php.net/manual /en/function.is-numeric.php)[is](http://php.net/manual/en/function.is-int.php)[your](http://php.net/manual/en /function.is-string.php)[friend](http://php.net/manual/en/function.is-object.php)。阅读。爱它。用它。 – 2012-04-18 16:17:06

+0

为什么要谢谢你? – Necko 2012-04-18 16:23:15

回答

1

你在找什么是Type Hinting。但是,如链接手册页所述:

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

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

如果要强制参数是一个字符串,做这样的事情:

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

我愿把这个表:

var_dump($str); 
1

Type Hinting在PHP5中引入的。正如您的示例所示,您现在可以通过在参数列表中提供该类型来强制参数具有某种类型。

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

你可以做你自己的内部检查,以确定传递的对象是否是使用像gettype()方法适当类型的,is_string()(处理other types也一样),甚至型算instanceof

+0

我想知道为什么你删除了这个。 +1 – 2012-04-18 16:25:36

1

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

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

但它是一个坏主意。不要尝试用新手语言来实现其他语言的功能。只要尝试拥抱正确的方式,看看它是如何从那里。

+0

最好的解释和清楚。 +1 – 2012-04-18 16:19:54

+0

哎呀忘了缩进。谢谢@xbonez – 2012-04-18 16:20:27

+0

thx很明显,代码的美感非常无趣,不知道它们的类型是否具有某些功能...... – Necko 2012-04-18 16:22:47