我需要创建大约。5-7个类,每个类将包含很多成员(假设每个类将包含20个成员)。我可以使用公共访问来创建它们,例如:
class A {
public $myPropertyOne = '';
public $myPropertyTwo = '';
...
}
当然,我更喜欢将这些成员设为私有并为每个属性创建 get/set 方法。IE
class A {
private $myPropertyOne = '';
private $myPropertyTwo = '';
public function getMyPropertyOne() {
return $this->myPropertyOne;
}
public function setMyPropertyOne($myPropertyOne) {
$this->myPropertyOne = $myPropertyOne;
}
public function getMyPropertyTwo() {
return $this->myPropertyTwo;
}
public function setMyPropertyTwo($myPropertyTwo) {
$this->myPropertyTwo = $myPropertyTwo;
}
}
但考虑到一个类会有 20 个属性,我将在此之外添加 40 个方法。我在这里担心的是这将如何减慢脚本的速度以及这将需要更多的内存(请记住,我将有几个这样的类)。
另一种解决方案可能是使用魔术函数 __set、__get 但我不想这样做,因为开发 IDE 中的代码完成不会建议对我至关重要的属性。
如果这将是一种编译语言(如 C++),我不会有任何问题,并且会使用带有 getter、setter 的解决方案,但由于 PHP 是解释性语言,我对我的脚本感兴趣,以使用更少的 RAM 并尽可能快。
在此先感谢,对这个问题的任何想法将不胜感激!
我的意见
谢谢大家的回答,我只是想分享我的意见,以防有人会寻找这个问题的答案。
我不能完全同意那些说你不应该关心性能的人,因为这是优化器的任务,我认为这是一个重要因素(至少对我而言),当我们处理 PHP 等解释性语言时,我们将始终必须考虑内存和速度(这一切都让我想起了我为 DOS 开发系统应用程序的时候,呵呵 :) 而且你总是受限于糟糕的 CPU 和千字节的总 RAM,所以如果你能节省额外的钱,你会很高兴byte),在 PHP 开发中,无论添加多少台服务器,您都拥有相同的画面,用户数将始终更高,因此您始终必须决定是否要遵循经典/安全/正确的方法或避免这种情况和在速度或内存方面获得一些收益。
所以....我的观点是,这里最好的方法是对所有成员使用公共访问,并避免对所有属性使用 getter/setter,并使用私有访问和 get/set 方法对需要数据验证或初始化的属性进行访问被设置。
例如:
class B {
public $myPropertyOne = '';
public $myPropertyTwo = '';
private $myPropertyThree = array();
public function getMyPropertyThree() {
return $this->myPropertyThree;
}
public function setMyPropertyThree($val) {
if(!is_array($val)) {
return;
}
$this->myPropertyThree = $val;
}
}
感谢您花时间回答我的问题!