2013-03-11 38 views
0

在某些编程语言(如Java或C#)中,允许程序员设置允许的输入变量类型。我使用PHP,我也想这样做,以避免将错误的数据传递给我的方法/函数。为方法参数设置允许的变量类型

我的代码:

public static function generateFiles(array $data, Custom_Pager $pager) 
{...} 

这是为什么允许的,我不能写这样的:

public static function generateFiles(array $data, Custom_Pager $pager, int $limit, string $text) 
{ ... } 

什么办法来规范第一和第二种方法的声明我上面介绍?如果不是,为什么?

回答

1

是的,您可以使用type hinting强制参数为某种类型,但它显然不适用于基元类型。

但是,如果参数值不符合您的期望,您可以在方法中抛出异常。

if (!is_int($param)) 
    throw new Exception('param must be int.'); 
1

PHP是weak-typed语言,所以这是不可能的。

PHP5.1介绍Type Hinting,虽然它有它的局限性:

类型提示不能与标量类型,如int或字符串中使用。 性状也是不允许的。

+0

不是不可能的,只是比您想象的更难 - http://nikic.github.com/2012/03/06/Scalar -type-hinting-is-harder-than-you-think.html – 2013-03-11 14:17:56

0

我做了一个强制类型提示的函数。它的工作原理如下:

function getVar($var,$type) { 
switch($type) { 
case "int": 
    return (int)$var; 
case "string": 
    return (string)$var; 
} 
} 

您可以继续使用所有其他类型。您也可以使用相同的方法来检查is_int,is_string,is_bool等变量...

+0

你的函数将会像generateFiles(getArray($ var1),getBool($ var2),getInt($ var3));例如,您可以执行以下操作: if(is_array($ var)){ return $ var; } else { return array($ var); } – 2013-03-11 14:31:20

相关问题