【问题标题】:How do I pass a pre defined callback filter in php?如何在 php 中传递预定义的回调过滤器?
【发布时间】:2017-06-09 09:09:13
【问题描述】:

所以我正在尝试使用 laravel 集合过滤器,我必须使用某个回调过滤集合,如下所示:

        $cases->filter(function ($item) {
            return $item->invention_id != '' || $item->invention_id != null;
        });
        $total->filter(function ($item) {
            return $item->invention_id != '' || $item->invention_id != null;
        });
        $participated->filter(function ($item) {
            return $item->invention_id != '' || $item->invention_id != null;
        });

那么我如何抽象这个函数,然后将它传递给所有 3 个?也许我的 PHP 基础在这里很薄弱,但我不确定。

        function filterInventionCases($item)
        {
            return $item->invention_id != '' || $item->invention_id != null;
        }

我可以做到这一点,但那又如何呢?我怎么把它传进去?

【问题讨论】:

    标签: php laravel laravel-5 callback


    【解决方案1】:

    您可以在filter 回调函数中调用您的回调。通过OOP

    $cases->filter(function ($item) {
        $this->filterInventionCases($item);
    });
    $total->filter(function ($item) {
        $this->filterInventionCases($item);
    });
    $participated->filter(function ($item) {
        $this->filterInventionCases($item);
    });
    

    $cases->filter(function ($item) {
        call_user_func('filterInventionCases', $item);
    });
    $total->filter(function ($item) {
        call_user_func('filterInventionCases', $item);
    });
    $participated->filter(function ($item) {
        call_user_func('filterInventionCases', $item);
    });
    

    Laravel filter 需要可调用类型的回调。或者你可以尝试使用 PHP array_filter function 支持函数的字符串名称

    array_filter($participated->toArray(), "filterInventionCases");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多