2

我有一个函数可以运行一些相当通用的代码,这些代码可以连接到数据库并设置不同的配置变量。在我运行的这个顶级函数代码的几个 if 语句中,实际上每个函数都不同。

这就是它现在的样子。

function get_users(){
  // config
  // set application keys
  // connect to database
  // retrieve user data
  // authentication to foreign api
  if(something){
    // some more red-tape
    if(something){
      //more more
      if(something){
        /* finally the good stuff */

        // the code here varies from function to function
        // eg. get users
        // probably will run: inner_get_users();

      }
    }
  }
}

function get_data(){
  // config
  // set application keys
  // connect to database
  // retrieve user data
  // authentication to foreign api
  if(something){
    // some more red-tape
    if(something){
      //more more
      if(something){
        /* finally the good stuff */

        // the code here varies from function to function
        // eg. get data
        // probably will run: inner_get_data();

      }
    }
  }
}

我希望它如何工作,也许使用匿名函数:

function instance($inner){
  // config
  // set application keys
  // connect to database
  // retrieve user data
  // authentication to foreign api
  if(something){
    // some more red-tape
    if(something){
      //more more
      if(something){
        /* finally the good stuff */

        Call inner

      }
    }
  }
}

function get_data(){

  instance(function(
    // get the data
  ));

}

或许

function get_users(){

  $var = function(
    // get the users
  );

  instance($var);

}

我正在寻找更好、更简洁、更易于维护的代码。

4

1 回答 1

1

这是 PHP 称为变量函数的东西。这适用于$inner函数的字符串名称和匿名函数(尽管变量函数的手册页没有解释)。

function instance($inner){
  // config
  // set application keys
  // connect to database
  // retrieve user data
  // authentication to foreign api
  if(something){
    // some more red-tape
    if(something){
      //more more
      if(something){
        /* finally the good stuff */

        return $inner();

      }
    }
  }
}
于 2012-05-21T13:49:03.173 回答