在OO编程中,它会被瞧不起使用魔术方法,__get()
并且__set()
这些会导致封装泄漏出类吗?例如:
class User {
private $username;
private $password;
public function __set($name,$value) {
$this->$name = $value;
}
public function __get($name) {
return $this->$name;
}
}
Run Code Online (Sandbox Code Playgroud)
这有效地使private
/ protected
变量public
.
你的代码:
class User {
private $username;
private $password;
public function __set($name,$value) {
$this->$name = $value;
}
public function __get($name) {
return $this->$name;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下是完全没必要的.
封装并不意味着 "一堆吸气剂和二传手".你可以将它重构为:
class User {
public $username;
public $password;
}
Run Code Online (Sandbox Code Playgroud)
就封装而言,它们是等价的.
一般而言__get
并且__set
有一些用途,但如果你能做到,你应该(特别是考虑到它们比通常的方法定义"慢得多").
归档时间: |
|
查看次数: |
270 次 |
最近记录: |