将参数传递给静态方法使用PHP

我建立我自己的框架,我想一个参数传递给一个静态方法。 出于某种原因,该参数未获得通过。 下面是代码:

Front.php:

if(URI::get(0) === "")

URI.php:

public static function get($index) { die($index); if(!filter_var($index, FILTER_VALIDATE_INT)) { throw new Exception('You must supply an integer index for the URI segment'); } return self::$uri[$index]; }

起初,我得到一个例外,所以我增加了模具的语句,以确保$指数实际上得到正确的传递。 显然,这不是因为当脚本退出,没有东西打印出来的指数。

我使用PHP 5.3.1。

--------------解决方案-------------

这是相当奇怪的,因为它应该工作; 测试这个代码部分之后:

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 )

如果状态是一个字符串,这个函数打印状态在退出前。
如果状态是一个整数,该值也将被用作退出状态。
[...]
注: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 (见转换为布尔值) -这样,你将进入if块; 并且会抛出异常。

考虑到filter_var的回报:

  • 过滤后的数据,
  • false当过滤器失败,
  • 并且0是可返回一个有效的数据,

你或许应该使用=== 操作符(参见比较运算符),返回的值进行比较,以false 。 这意味着一些代码,如下所示:

if(filter_var($index, FILTER_VALIDATE_INT) === false) {
throw new Exception('...');
}

希望这可以帮助 !

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP的,静态的,参数
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.548 (s). 10 q(s)