我目前的PHP类变量设置如下:
class someThing { private $cat; private $dog; private $mouse; private $hamster; private $zebra; private $lion; //getters, setters and other methods }
但我也看到人们使用单个数组来存储所有变量:
class someThing { private $data = array(); //getters, setters and other methods }
你用哪个,为什么?各有哪些优缺点?
一般来说,第一个更好,因为其他人已经在这里说过.
但是,如果您需要私有地在类上存储数据,但数据成员的占用空间未知,您通常会看到第二个示例与__get()__ set()挂钩以隐藏它们是私有存储的.
class someThing { private $data = array(); public function __get( $property ) { if ( isset( $this->data[$property] ) ) { return $this->data[$property]; } return null; } public function __set( $property, $value ) { $this->data[$property] = $value; } }
然后,此类的对象可以像stdClass的实例一样使用,只有您设置的成员实际上不是公共的
$o = new someThing() $o->cow = 'moo'; $o->dog = 'woof'; // etc
此技术有其用途,但请注意__get()和__set()比直接设置公共属性的速度快10-12倍.
如果你正在使用private $data;
你,那里只有一个难以理解的数据......如果你想弄清楚一个类是如何工作的,那么明确地说明它们会让你的生活更轻松.
另一个考虑因素是如果您使用具有自动完成功能的IDE - 这不适用于第二种方法.