作为一种良好的编码实践,全局变量最好是有问题的,最坏是危险的。如果可能的话,应该尽量避免。为什么?因为如果其他插件开发人员也决定定义$a
作为全球?该插件所做的一切都将覆盖您的全局$a
而你的可能会对他们的造成严重破坏。
WordPress在其自己的代码中使用了这么多这样的代码,这开创了一个糟糕的先例,但好消息是,您不必这样做,而且在大多数情况下,您可以避免增加已经存在的混乱。
避免全局变量的一种简单方法是将变量包装到另一个将返回值的函数中:
function my_theme_array() {
return array(\'asdf\', \'asdf\', \'asdfasd\');
}
这将允许您从其他函数中检索它,同时将其保留在本地范围内,避免与其他代码冲突:
function themeslug_query_vars( $qvars ) {
$a = my_theme_array();
... // Now use $a for whatever.
}
function search_pre_get_posts($query){
$a = my_theme_array();
}
如果希望能够更改函数返回的内容,而不是将数组硬编码到
my_theme_array()
函数,您可以将函数设置为获取将更改数组当前设置值的参数:
function my_theme_array_ver_2( array $new_values = null ) {
static $my_array = array(\'asdf\', \'asdf\', \'asdfasd\'); // default values
if ( isset( $new_values ) ) {
$my_array = $new_values;
} else {
return $my_array;
}
因此,现在可以调用函数来设置其返回值:
my_theme_array_ver_2( array( 1, 2, 3 ) );
或者,您可以简单地要求它返回当前设置的任何值:
$a_this_time_around = my_theme_array_ver_2();