我的问题如下。我承认在PHP中使用数组而不是对象可能会更好地提高性能;就像我在很多帖子中看到的那样。但我在一个环境中工作,那里的代码有很多行代码和很多数组;问题是,当我想修改或研究一个代码时,我不知道数组有什么变量,例如:
$person['age'] = 18;
$person['name'] = 'Robert';
如果那个可变的人有其他详细信息,我就没有完整的信息;解决方案是使用调试器来监视数组$person中包含的其他信息。
我曾想过尝试使用类(如模型)来表示对象。类似:
class Person {
const AGE = 'age';
const NAME = 'name';
}
$person[Person::AGE] = 18;
$person[Person::NAME] = 'Robert';
所以我会知道什么属性具有Person。
问题是:使用数组比使用对象好吗?如果我更喜欢使用array:是否有任何方法可以使用其他类(如上面的示例)来提高代码的可维护性?
为什么不直接创建一个person类?然后你就知道了它们都将具有的属性。
class Person {
protected $age;
protected $name;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function getAge() {
return $this->age;
}
public function getName() {
return $this->name;
}
这样,如果你想添加一些类型检查或格式化,你可以将其添加到这个类中,而不必在代码库中到处搜索数组的关键字
这些数据对象是非常直接的,但您将能够非常容易地整合功能,并且在知道它们在哪里的情况下更容易维护。
如果具有person属性的数组表示不同的对象,则可以利用抽象类,这样您就知道它们具有该属性。或者只是指定类将具有getAge
或getName
方法的接口。
用类常量指定数组的键实际上只是使用对象的一小步。迈出这一步。您还可以避免担心必须检查密钥在数组中是否有效。您的对象可以为您设置一个默认值,并且您可以放心地使用该对象的属性。