当人们处理扩展其他类并根据类中的某些设置提供功能的类时,我看到了两种不同的实现。
- 变量用于存储设置。
- 方法用于返回设置。
使用变量:
class Model {
var $fields = array();
function getFields() {
return array_keys($this->fields);
}
function getRules() {
return $this->fields;
}
}
class Person extends Model {
var $fields = array(
'name' => array('maxLength'=>10),
'email' => array('maxLength'=>50, 'validEmail'=>true),
);
}
使用方法:
class Model {
function getFields() {}
}
class Person extends Model {
function getFields() {
return array('name','email');
}
function getRules() {
return array(
'name' => array('maxLength'=>10),
'email' => array('maxLength'=>50, 'validEmail'=>true),
);
}
}
两个示例都实现了相同的结果,我可以执行类似$person->getFields()
and的操作$person->getRules()
,但是在方法示例中我不喜欢“重复”字段列表,因为字段实际上是在 and 中定义的,$person->getFields()
并且$person->getRules()
每次它都必须计算数组通过方法要求。另一方面,我不喜欢每个对象都将所有设置存储在一个变量中。这似乎是一种资源浪费。所以我只是想知道什么是更好的方法。
我的主要问题是:
- 是否有性能原因选择一种方式而不是另一种方式?2)
- 是否有面向对象逻辑/易于编程/其他原因选择一种方式而不是另一种方式?