【发布时间】:2017-12-17 09:50:55
【问题描述】:
我有一个带有方法 saveToTable($table) 的类 Bar,我需要为 $table 设置一个默认值,但该值需要是动态的,动态值应该是 Bar 扩展至的类的名称。
class Bar {
public function saveToTable($table) {
}
}
class Foo extends Bar {
}
$bar = new Foo;
$bar->saveToTable(); // in which case saveToTable() would have a param of 'foo' i.e. saveToTable('foo');
我目前使用的解决方案是在每个扩展 Bar 的类中明确指定一个 $table 属性,并为其分配这些类名称的字符串值,但这会破坏使我的应用程序动态化的目的,加上它会很麻烦而且容易出错。
【问题讨论】:
-
这真是糟糕的设计。不要将业务逻辑与类名称等实现细节混为一谈。
-
好的,我明白了,那你有什么建议?