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)
{ ... }

有什么方法可以标准化我上面介绍的第一种和第二种方法声明?如果不是,为什么?

4

3 回答 3

1

PHP 是一种弱类型语言,所以这是不可能的。

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

类型提示不能用于标量类型,例如 int 或 string。特征也是不允许的。

于 2013-03-11T14:15:41.440 回答
1

是的,您可以使用类型提示将参数强制为某种类型,但它显然不适用于原始类型。

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

if (!is_int($param))
    throw new Exception('param must be int.');
于 2013-03-11T14:20:02.603 回答
0

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

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

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

于 2013-03-11T14:28:59.403 回答