简体   繁体   中英

Is there a way to use functions to auto-populate outer context with variables in 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);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM