2017-04-09 71 views
1

我从中学习的书虽然并不总是必要的,但它通常被认为是具有getter和setter方法的良好实践。Get方法和Set方法在类中的区别

就是这样说,每个例子中的方法在我启动一个对象并传递一个值给方法时工作正常。

所以我只是想知道什么是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('[email protected]'); //prints email address 

例2

$obj->setEmail('[email protected]') 
$obj->getEmail()//prints email adress 

我看不出为什么额外的步骤是例如2必需的,也许是因为我(非常)新OOP & PHP。我只是认为在继续之前了解它们之间的差异很重要,因为我的书没有详细说明。

回答

1

因为你并不总是wan't获得,并在同一时间

setter是设定值,并为获得一个吸气设定的电子邮件。(正如其名字所暗示的)

有时你只需要改变你的电子邮件的价值。有人更新他们的电子邮件并重定向到他们没有看到他们的电子邮件的新页面。您只需使用setEmail($email)即可设置新邮件,但您不需要知道该邮件。

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

因此,在例1中,在收到邮件之前,您总是需要知道电子邮件。但是,如果你还不知道电子邮件,这是行不通的。

您可以使用示例1作为setter方法,因为它可以让您更改该值,并且您通常希望在之后收到它。

对于良好的做法,总是只使用一个吸气剂和一个装置分开