dphphvs496524 2012-06-26 22:42
浏览 36
已采纳

php闭包实例5.3

This a little hard for me to explain, but I'll try my best. I'm trying to find the best way to create an instance of a closure. Below is an example of how I am creating and accessing the closure:

$myvar->parse('var1, var2', function () {
  //my code
});

I then loop through the strings by exploding the comma and put it into an array like so.

$array = array();
$array['var1'] = closure();
$array['var2'] = closure();

Later on in my code I use call_user_func to execute the function.

Now, the issue I'm having is that when I access $array['var1'] it calls the closure without any problem.

But when I access $array['var2'] it does nothing. I've been looking at diverse websites for a while without much luck. Do I need to use pointers (tried without success) or create a new instance of it somehow?

I currently only have access to php 5.3 on my server, so I can't use any of the awesome stuff in 5.4 :(

I'd really appreciate any feedback and advice you may have.

  • 写回答

2条回答 默认 最新

  • dras2334 2012-06-26 22:46
    关注

    Yes your question isn't clear. You knew it so I wonder why you didn't explained better.

    Anyway if you need to run a closure stored inside $array['var2'] you have to specifically put in your code something like this:

    $array['var2'] = function(){
    //> Code
    };
    

    That's the only way

    By guessing at your code, your function parse should like:

    function parse($keys,$func) {
     $array = array();
     foreach(explode(',',$keys) as $v) {
       $array[trim($v)] = $func;  //> trim important here!
     }
    }
    

    Most likely you have forgot to trim($v)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开