在PHP中创建动态类变量是个好主意吗?

Kul*_*ksi 3 php oop

在创建类时,我遵循OO约定并在使用它们之前声明所有类变量:

    class myClass {
      private $property1, $property2, ...;

      public __constructor() {
         $this->property1 = $this->property2 = NULL;
      }

    }
Run Code Online (Sandbox Code Playgroud)

但我意识到PHP是脚本语言而不是严格遵循OO概念,所以我们可以动态地"生成"类属性:

    class myClass {
      public __constructor() {
         $this->fields = $this->db->getFields(TABLE_NAME);

         foreach($this->fields as $fld) {
           $this->{$fld} = NULL;
         }
      }

    }
Run Code Online (Sandbox Code Playgroud)

这是一个好方法吗?我认为动态生成的属性默认具有公共访问权限,因此这可能是一个缺点,这种自动化可能是一个优势.在性能方面有什么不同吗?

Dr *_*Kay 5

你并不鼓励你这样做,但在某些情况下你只需要(就像在ORM中,你似乎在写作).类应该有干净的接口(程序员需要知道他可以对你的类做什么).

但是有一种更好的处理这些案例的方法(至少对我来说似乎更好).在类中使用关联数组并使用__get方法.对于ORM来说甚至可能更好(您可以实现延迟加载等).