我已經看到了一些項目,其中類有get和set方法來操作插入數據。讓我舉一個例子:是否值得在OOP中獲取和設置方法?
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和腳本語言確實無關。因此要求引導者和獲取者往往是一個副作用,但它不是很面向對象的。另見[PHP Getters and setters:evil or necessary evil?](http://berryllium.nl/2011/02/getters-and-setters-evil-or-necessary-evil/)和[Java:Getters and setters是邪惡](http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html) – mario
可能的重複[是否真的沒有使用setters和getters錯誤?](http:/ /stackoverflow.com/questions/808348/is-it-really-that-wrong-not-using-setters-and-getters) – mario