有没有办法使用函数自动填充外部上下文与PHP中的变量?

时间:2017-02-23 14:12:10

标签: php function variables scope

我在想......让我们考虑一下:

function get_current_post_id(){
  global $wp_query;
  return $wp_query->get_queried_object_id();
}

...后来

function test($post_id = null){
   if(!$post_id) $post_id = get_current_post_id();
}

确定。但如果我只能这样写,那就太棒了:

function test($post_id = null){
   if(!$post_id) get_current_post_id();

   // ...and directly have $post_id populated and ready to use
   do_something($post_id);
}

让我的$ post_id变量在当前上下文中自动填充(test()函数)。有办法吗?我的意思是,不使用全局

1 个答案:

答案 0 :(得分:0)

好的,我发现这是可能的,正如@arkascha所说,我可以通过引用传递:

function get_current_post_id(&$post_id = null){// &$post_id instead of $post_id
  global $wp_query;
  $post_id = $wp_query->get_queried_object_id();
  return $post_id; // optional
}

问题是:我可以简单地通过引用传递变量。 然后:

function test($post_id = null){
   if(!$post_id) get_current_post_id($post_id); // even if I know it's null

   // ...then $post_id will be auto-populated
   do_something($post_id);
}