在PHP中,使用常量为使用数组的模型对象定义矩阵


Using constants to define atributes for model objects using arrays in PHP

我的问题如下。我承认在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属性的数组表示不同的对象,则可以利用抽象类,这样您就知道它们具有该属性。或者只是指定类将具有getAgegetName方法的接口。

用类常量指定数组的键实际上只是使用对象的一小步。迈出这一步。您还可以避免担心必须检查密钥在数组中是否有效。您的对象可以为您设置一个默认值,并且您可以放心地使用该对象的属性。