【发布时间】:2012-05-16 10:41:15
【问题描述】:
我见过一些项目,其中类具有获取和设置方法来操作插入数据。让我在这里举个例子:
class Student extends dbClass
{
private $TableID;
private $FullName;
private $Gender;
private $Address;
function setTableID($Value)
{
$this->TableID = $Value;
}
function getTableID()
{
return $this->TableID;
}
function setFullName($Value)
{
$this->FullName = $Value;
}
function getFullName()
{
return $this->FullName;
}
function setGender($Value)
{
$this->Gender = $Value;
}
function getGender()
{
return $this->Gender;
}
function setAddress($Value)
{
$this->Address = $Value;
}
function getAddress()
{
return $this->Address;
}
function UpdateStudent()
{
$sql = "UPDATE INTO usertable SET
FullName = '".$this->getFullName()."',
Gender = '".$this->getGender()."',
Address = '".$this->getAddress()."'
where TableID='".$this->getTableID()."'";
$this->query($sql);
}
}
上面是我看到的示例类。以下是他们如何使用它的过程:
$student = new Student;
$student->setTableID = 1;
$student->setFullName('My Name');
$student->setGender('Male');
$student->setAddress('this is my address');
$studen->UpdateStudent();
这样做值得吗?我个人认为设置字段然后获取和更新其中的记录是没有用的。为每个模块制作它确实需要很多时间。处理这种事情的最佳方法是什么? 这样做是否有任何安全问题?
【问题讨论】:
-
访问修饰符(如
private)经常被误解为安全功能。在他们当前的 C++ 化身中,他们实际上是为了限制 ABI(而不是 API)的暴露;这实际上与 PHP 和脚本语言无关。因此,需要 setter 和 getter 通常是一种副作用,但它不是非常面向对象的。另见PHP Getters and setters: evil or necessary evil? 和Java: Getters and setters are evil