关于 spLaunch 函数的问题 ,我觉得应该是个Bug,求证中

#1 kingyang

首先声明我是Php初学者,之前一直做Asp.net. 一接触SP就喜欢上了,回归正题

spRun  执行的第一个句为 spLaunch ( "router_prefilter" ),因此我想注入我自己的router_prefilter. 而同时我想使用单独的函数模式,而不是类+函数. 这时应该调用call_user_func_array 来执行我自己的函数,但是 $launchargs 默认为null 就引起了定义的函数执行不了. 我的Php版本为5.3.17.
目前我的处理方法是 修改SP把
function spLaunch($configname, $launchargs = null, $returns = FALSE)
改为
function spLaunch($configname, $launchargs = array(), $returns = FALSE)

也就是传入空数组就解



2012-12-13 23:23:35

#2 kingyang

通过修改的方式 就破坏了Sp的独立性  希望斑竹解答:):):)

2012-12-13 23:26:24

#3 jake

call_user_func_array 第二个参数可以为null,函数会正常执行。见下面代码:

function foobar() {
    echo __FUNCTION__, " got foobar";
}
function run($func, $args = null){
        call_user_func_array($func, $args);
}

run("foobar");
?>
PS:下次,BUG请发到BUG提交与答复区。本帖将转移。

2012-12-14 09:21:21

#4 kingyang

jake 发表于 2012-12-14 09:21
call_user_func_array 第二个参数可以为null,函数会正常执行。见下面代码:要区分:参数传入什么和参数默 ...
非常感谢jake的答复:
function foobar() {
    echo __FUNCTION__, " got foobar";
}
function run($func, $args = null){
        call_user_func_array($func, $args);
}

run("foobar");
?>
我的环境是 IIS +Php5.3.17,上面代码我测试过程中 也存在这个问题.
function run($func, $args = null) 是执行不到footbar的,
只有改为
function run($func, $args = array())



2012-12-15 08:48:35

#5 jake

kingyang 发表于 2012-12-15 08:48
非常感谢jake的答复:我的环境是 IIS +Php5.3.17,上面代码我测试过程中 也存在这个问题.
function run($f ...
执行不到,那么提示是什么呢?

2012-12-15 08:52:03

#6 kingyang

刚才准备给你发消息,看到我没权限.
错误日志里面也没记录错误,应该是直接跳过了,

2012-12-15 08:56:34

#7 jake

好,的确是个bug,记录!

感谢楼上支持。

2012-12-15 09:16:15