这很奇怪,因为它应该工作;测试的这部分程序后:
class ClassA {
public static function a($param) {
var_dump($param);
}
}
ClassA::a(123);
我得到这样的输出:
int 123
这表明静态方法确实接收参数(我不明白为什么它不应该,实际上) 。
作为旁注,你用的码本部分结束:
die(0);
引述手册页exit
(这是相同的管芯上)(重点煤矿):
void exit ([ string $status ])
void exit (int $status)
如果status是一个字符串,该函数 在退出之前打印状态。
如果状态是一个整数,那么 值也将用作退出 的状态。
[...]
注意:PHP > = 4.2.0如果是整数,则不会打印状态。
您正在使用PHP 5.3,这是比4.2更新的版本;并在你的情况下,$status
是一个整数 - 这意味着它是没有任何显示,与您的代码张贴是完全正常的。
而且,为了完成:如果删除了die
,你的代码最终这样做:
if(!filter_var($index, FILTER_VALIDATE_INT)) {
throw new Exception('...');
}
随着$index = 0
filter_var
返回过滤后的值;使用FILTER_VALIDATE_INT
,我想你是过滤得到一个整数 - 而0是整数。
这意味着您致电filter_var
将返回0
。
0
被视为false
(见Converting to boolean) - 所以,你将进入if
块;并会抛出异常。
考虑filter_var
回报:
- 过滤后的数据,
- 或
false
当过滤器失效,
- 这
0
是可以返回一个有效的数据,
您应该使用===
运营商(见Comparison Operators),将返回值与false
进行比较。这意味着一些代码,应该是这样的:
if(filter_var($index, FILTER_VALIDATE_INT) === false) {
throw new Exception('...');
}
希望这有助于!
感谢您的回应,我添加了回声,而不是一个骰子,0被越过...不幸的是,异常是抛出,这意味着它不认为0是一个int。 – adaykin 2009-12-26 20:52:42
Ahh没有看到最后一部分,现在就开始工作,谢谢! – adaykin 2009-12-26 20:55:24
不客气:-)玩得开心! – 2009-12-26 20:58:51