有没有办法使用函数自动填充外部上下文与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);
}