在创建类时,我遵循OO约定并在使用它们之前声明所有类变量:
class myClass {
private $property1, $property2, ...;
public __constructor() {
$this->property1 = $this->property2 = NULL;
}
}
但我意识到PHP是脚本语言而不是严格遵循OO概念,所以我们可以动态地“生成”类属性:
class myClass {
public __constructor() {
$this->fields = $this->db->getFields(TABLE_NAME);
foreach($this->fields as $fld) {
$this->{$fld} = NULL;
}
}
}
这是一个好方法吗?
我认为动态生成的属性默认具有公共访问权限,因此这可能是一个缺点,这种自动化可能是一个优势.
在性能方面有什么不同吗?
解决方法:
你并不鼓励你这样做,但在某些情况下你只需要(就像在ORM中,你似乎在写作).类应该有干净的接口(程序员需要知道他可以对你的类做什么).
但是有一种更好的处理这些案例的方法(至少对我来说似乎更好).在类中准备关联的数据数组并使用__get方法.对于ORM来说甚至可能更好(您可以实现延迟加载等).
标签:php,oop
来源: https://codeday.me/bug/20190723/1516097.html