如果您正在处理在全局变量中保存值的框架,那么您对此无能为力。下面是一个将变量包装在静态getter中的示例。
if ( ! class_exists( \'SMOFData\' ) ):
class SMOFData {
static public function is( $key, $compare ) {
$value = static::get( $key );
return $value === $compare;
}
static public function not( $key, $compare ) {
$value = static::get( $key );
return $value !== $compare;
}
static public function has( $key ) {
$value = static::get( $key );
return ! empty( $value );
}
static public function get( $key ) {
global $smof_data;
if ( ! isset( $smof_data ) ) {
return null;
}
return isset( $smof_data[ $key ] ) ? $smof_data[ $key ] : null;
}
}
endif; // SMOFData
要访问数据,只需使用
echo SMOFData::get(\'td_header_blocks\')[\'enabled\'];
function matilda_customize_styles() {
$css = \'<style type="text/css" media="screen">\';
$td_body_font_family = SMOFData::get( \'td_body_font_family\' );
if ( ! empty( $td_body_font_family ) && $td_body_font_family != \'none\' ) {
$css .= \'body{font-family:\' . esc_html( $td_body_font_family ) . \';}\';
}
}
function matilda_customize_styles() {
$css = \'<style type="text/css" media="screen">\';
if ( SMOFData::has( \'td_body_font_family\' ) && SMOFData::not( \'td_body_font_family\', \'none\' ) ) {
$css .= \'body{font-family:\' . esc_html( SMOFData::get( \'td_body_font_family\' ) ) . \';}\';
}
}
如果你只想成为自己的全局成员,你也可以将其包装在一个类中。
if ( ! class_exists( \'ThemeData\' ) ):
class ThemeData {
private static $_values = array ();
static public function get( $key ) {
return isset( static::$_values[ $key ] ) ? static::$_values[ $key ] : null;
}
static public function set( $key, $value ) {
static::$_values[ $key ] = $value;
return $value;
}
}
endif; // ThemeData
// setter
ThemeData::set(\'foo\', \'bar\');
// getter
echo ThemeData::get(\'foo\');