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

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

问题描述:

I was wondering... Let's consider this:

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

Later...

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

Ok. But it would be fantastic if I could only write this:

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);
}

And have my $post_id variable auto-populated in the current context (the test() function). Is there a way? I mean, without using globals.

Ok, I've found that's possible, as @arkascha said, I can pass by reference:

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
}

The thing is: I can simply pass the variable by reference. Then:

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);
}