代码之家  ›  专栏  ›  技术社区  ›  ToujouAya

返回前处理程序数据

  •  0
  • ToujouAya  · 技术社区  · 6 年前

    这是我对基于数据类型的返回前自定义数据的简单实现。 如果我有很多类型,我想知道什么是路由到预期处理函数的最佳解决方案。我不想用太多 switch if-else 。你们能看看这段代码并告诉我一些建议吗?在返回之前,还有其他方法处理数据吗?非常感谢。

    function A($data) {
    
    }
    
    function B($data) {
    }
    
    function bill($data) {
        return converter($data, $type)
    }
    
    function converter($data, $type) {
        if ($type == 'A')
        {
            return A($data);
        } else {
            return B($data);
        }
    }
    

    我的英语不好。对此表示抱歉。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Syscall - leaving SO... Juhzuri    6 年前

    你可以使用 call_user_func() 根据调用函数 $type :

    function A($data) {
        return __function__ . " " . reset($data);
    }
    
    function B($data) {
        return __function__ . " " . end($data);
    }
    
    function converter($data, $type) {
        if (!function_exists($type)) return false ;
        return call_user_func($type, $data) ;
    }
    
    // Example:
    echo converter(['data','test'], 'A'); // calls A()
    echo converter(['data','test'], 'B'); // calls B()
    

    将输出:

    A data
    B test
    

    你也可以看看 call_user_func_array() 用于使用参数数组。