为了最好地回答你的问题,我建议不要回答;)
或者更准确地说:Encapsulate what varies。
由于您现在不知道如何/在何处存储设置,请创建为您的存储提供接口的对象,并将整个存储隐藏在插件的其余部分之外。
一些示例代码:
interface myStore {
const PREFIX = \'myStore\';
public function get($name);
public function set($name, $value);
}
/**
* option storage: all in one wordpress option
*/
class myStore_Options implements myStore {
private $data = null;
private $optionName = \'\';
private init() {
if (null===$this->data) {
$this->optionName = myStore::PREFIX.\'_options\';
$this->data = get_option($this->optionName, array());
}
}
public function get($name) {
if (array_key_exists($this->data, $name)
return $this->data[$name];
return \'\';
}
public function set($name, $value) {
$this->data[$name] = $value;
update_option($this->optionName, $this->data);
}
}
$store = new MyStore_Options();
代码中的任何地方都可以使用
$store->get(\'settingName\')
无论您实施哪个存储层。
您现在可以创建另一个实现myStore接口的myStore\\u xxxx类,例如样式。它的工作原理完全相同,但您可以将样式放在其他地方。
通常,您只需要读写设置,因此在界面中只需要两个函数。
然后,您可以随着时间的推移或在继续扩展选项值/样式数量的同时更改存储方法,而不影响插件代码。