Class中Get方法和Set方法的区别

时间:2017-04-09 10:03:47

标签: php oop

我正在学习的这本书虽然并不总是必要,但通常认为使用getter和setter方法是一种好习惯。

据说,当我启动一个对象并将值传递给该方法时,每个示例中的方法都能正常工作。

所以我只是想知道以下

之间有什么区别

示例1

Class Something{
  public $email;
      function getEmail($newEmail){
        return $this->email = $newEmail;
    }
}

示例2

Class Something{
   public $email
   function setEmail($newEmail){
     $this->email = $newEmail
   }
   function getEmail(){
    return $this->email
    }
}

示例1

  $obj = new Something();
    echo $obj->getEmail('example@exaple.com'); //prints email address

示例2

$obj->setEmail('example@example.com')
$obj->getEmail()//prints email adress

我不明白为什么在例2中需要额外的步骤,也许是因为我(非常)对OOP& PHP。我只是认为在继续之前知道差异很重要,因为我的书并没有真正详细说明。

1 个答案:

答案 0 :(得分:1)

因为您并不总是想要同时收到并设置电子邮件

setter用于设置值,getter用于获取值。(顾名思义)

有时您只需要使用电子邮件更改值。有人更新他们的电子邮件并重定向到他们看不到他们的电子邮件的新页面。您只需使用setEmail($email)设置新电子邮件,但无需获取。

另一种方式,有时你只需要得到一些东西(你还不知道它的价值)。例如,您获得了用户个人资料,并且需要显示您的电子邮件。然后使用getEmail()并获取它。您不想先设置电子邮件,因为您已拥有该值。所以你只想收到它。

因此,在示例1中,您始终需要在收到电子邮件之前知道该电子邮件。但如果您还不知道该电子邮件,这将无效。

您可以使用示例1作为setter方法,因为它允许您更改值,并且您经常希望以后再接收它。

为了良好的练习,总是只使用一个吸气剂和一个二传手