为方法参数设置允许的变量类型

时间:2013-03-11 14:13:11

标签: php variables

在某些编程语言(如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)
{ ... }

有没有办法标准化上面提到的第一和第二种方法声明?如果不是,为什么?

3 个答案:

答案 0 :(得分:1)

PHP是一种weak-typed语言,因此无法实现。

PHP5.1引入了Type Hinting,虽然它有它的局限性:

  

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

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