使用PHP将参数传递给静态方法
我正在构建自己的框架,并尝试将参数传递给静态方法。由于某些原因,无法传递该参数。代码如下: Front.php:使用PHP将参数传递给静态方法,php,static,parameters,Php,Static,Parameters,我正在构建自己的框架,并尝试将参数传递给静态方法。由于某些原因,无法传递该参数。代码如下: 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 s
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];
}
起初,我得到了一个异常,所以我在die语句中添加了一个异常,以确保$index实际上被正确传递。显然,这并不是因为脚本退出时,没有为索引打印任何内容
我使用的是PHP5.3.1。这很奇怪,因为它应该可以工作;测试这部分代码后:
class ClassA {
public static function a($param) {
var_dump($param);
}
}
ClassA::a(123);
die(0);
我得到这个输出:
int 123
这表明静态方法确实收到了参数(实际上,我看不出为什么它不应该)
作为旁注,您将以这部分代码结尾:
class ClassA {
public static function a($param) {
var_dump($param);
}
}
ClassA::a(123);
die(0);
引用手册页(与模具相同)(强调我的):
如果状态为字符串,则此函数
在退出之前打印状态。
如果status是一个整数,那么 值也将用作出口 地位
[…]
注意:PHP >=4.2.0如果是整数,则不打印状态。 您使用的是PHP5.3,这是比4.2更新的版本;在您的例子中,
$status
是一个整数,这意味着您发布的代码没有显示任何内容是完全正常的
最后,如果您移除
模具
,您的代码将执行以下操作:
if(!filter_var($index, FILTER_VALIDATE_INT)) {
throw new Exception('...');
}
使用$index=0
返回过滤后的值;使用FILTER\u VALIDATE\u INT
,我假设您正在进行筛选以获得一个整数——0是整数
这意味着您对filter\u var
的调用将返回0
0
被视为false
(请参阅)--因此,您将进入if
块;然后将抛出异常
考虑到回报:
- 过滤后的数据
- 或当过滤器出现故障时
false
- 并且
是可以返回的有效数据0
==
运算符(请参阅)将返回值与false
进行比较。这意味着一些代码如下所示:
if(filter_var($index, FILTER_VALIDATE_INT) === false) {
throw new Exception('...');
}
感谢您的响应,我添加了一个echo而不是die,并且0正在传入…不幸的是,引发了异常,这意味着它不认为0是int。