有一个主题我已经挣扎了很长一段时间,它存在于静态方法,单例和传递参数的应用程序领域。我一直试图找到一种方法来使用类来传递变量。这是一个例子:
class EmployeeSettings {
private static $statuses = array();
private static $isInit = false;
private static function init() {
if(self::$isInit) return;
self::$statuses = array(
'active' => array(
'value' => 0,
'name' =>'Active'
),
'terminated' =>array(
'value' => 1,
'name' =>'Termninated'
),
'suspended' => array(
'value' => 2,
'name' =>'Suspended'
),
);
self::$isInit = true;
}
public static function getStatuses() {
self::init();
return self::$statuses;
}
public static function getStatusName($status) {
self::init();
foreach(self::getStatuses() as $ref => $info) {
if($info['value']==$status) {
return self::$statuses[$ref]['name'];
break;
}
}
}
}
这样我就可以在整个应用中访问EmployeeSettings
的任何参数。
可以构建类似的模式,其中将存储所有应用程序的配置:
class CoreConfig
{
static $confArray;
public static function read($name)
{
return self::$confArray[$name];
}
public static function write($name, $value)
{
self::$confArray[$name] = $value;
}
}
非常方便"因为我可以得到任何我需要的配置设置。 有些人会说,出于多种原因要避免这种类型的设计,其中没有一个似乎告诉我为什么它们会变坏以及为什么要避免它们。通常,在概念上和架构上允许仅访问特定类的一个实例是有道理的,并且我不确定如何继续进行。
答案 0 :(得分:2)
有一段时间,单身人士风靡一时。
然后有人发现他们真的是伪装的全球人!哦,恐怖!!
现在愤怒是Dependency Injection。有一天,一个新的"新的"会来,DI也会受到鄙视。
便利性稍纵即逝。迟早会让你失望。您可以尝试MVC框架,而不是尝试重新发明轮子。他们中的一些人正在使用最新的范例并且非常扎实。我更喜欢Symfony2。 Laravel目前非常受欢迎。有many others。