将全局值分配给静态属性的最佳方法是什么(从类外部)
(我不想使用常量(即 define( ... ) )。
(因为我使用的是静态类,所以没有构造函数,所以我不能将值作为参数注入)
方法A ...不会工作 ...我的首选方法,但它不起作用
$my_global = "aaa" ;
class my_class
{ public static $my_prop = $GLOBALS[ 'my_global' ] ; // XXX
}
方法B ...可行,但感觉不对...我可以使用显式设置器,我知道,但那样我就会有一堆单一用途的设置器。
$my_global = "aaa" ;
my_class::$my_prop = $my_global ;
class my_class
{ public static $my_prop ;
}
方法C ...不会工作 ...使用通用设置器为特定属性分配值。我希望这种方法可以。
$my_global = "aaa" ;
my_class::my_setter( "my_prop" , $my_global ) ;
class my_class
{ private static $my_prop ;
public static function my_setter( $prop_name , $value )
{ self::$prop_name = $value ; // XXX
self[ $prop_name ] = $value ; // XXX
}
}
方法D ... WORKS ... 使用通用设置器在“匿名”注册表中分配值。我不喜欢这种方法,因为我不知道注册表中有什么。
$my_global = "aaa" ;
my_class::my_setter( "my_prop" , $my_global ) ;
class my_class
{ private static $my_registry = array() ;
public static function my_setter( $prop_name , $value )
{ self::$my_registry[ $prop_name ] = $value ;
}
}