我想知道哪种方式更好用。 在控制器类中使用私有属性,或仅使用一个私有属性作为属性数组。
而不是:
class User{
private $id;
private $firstName;
private $surname;
private $age;
private $gender;
private $city;
...
...
}
class User{
private $data;
}
然后能够做这样的事情:
function __construct(){
//this would contain id, firstName, username, age, gender...
$data = $model->getData();
}
由于
答案 0 :(得分:2)
使用数组,您将在课堂上编写代码时丢失所有自动完成工具。您将无法检测属性上的语法错误。事实上,您的代码会更加混乱,描述性更差。
使用对象通常是一件好事,可以提供更好的可维护性,可以与多个开发人员共享,也可以在编写完几个月或几年后与自己共享。在我看来,你应该保持属性。更加混乱的代码可能会被“优化”或“更短”,但如果您只想编写汇编代码。如果你想制作目标代码,以干净的方式进行,你总能找到一种能够挽救你未来生活的情况。
你的问题在于,你可能认为在对象属性和模型层列之间保持干净的映射真的很痛苦。但无论您尝试什么,这都是您在所有应用程序中始终必须编写代码的最小事情,如果在此处未完成,您在使用对象时仍需要知道这些属性。这可能是Pattern of Failure:
我们大多数开发人员都接受“不要重复自己/复制是邪恶”的原则,我们会尽可能地应用我们创建的软件。但是,我们可以做出的最致命的陷阱之一就是过于夸张地挥动抽象魔杖,而且我们经常忘记不必要重复的后果远远小于不必要的整合的后果。
使用DataModel加载示例,我可以看到两个潜在的未来问题:
事实上,如果你想根据对象相关模型来填充对象属性,你应该认为它更通用,也许暗示其他对象,接口,工厂,几种方法。至少不在构造中。
使用数组用于数组,使用属性属性,让PHP引擎优化属性管理,我确信代码优化器会使用属性比使用字符串索引的数组做得更好。
答案 1 :(得分:0)
取决于你真正需要做些什么,但通常一个阵列可以让你更容易操作。
P.S。:他们被称为属性,而不是属性。
答案 2 :(得分:0)
如果您有许多属性使用数组。这样你可以使用魔术方法的力量,如:
public function __set($name, $value)
{
echo "Setting '$name' to '$value'\n";
$this->data[$name] = $value;
}
参考:http://www.php.net/manual/en/language.oop5.overloading.php#object.set