我正在学习php oop。但我无法理解在哪些情况下使用公共,私人和受保护。我知道public可以在类中和类外部访问,在类内部受保护,在内部类中继承它,private只能在类中访问。但是如何知道财产或方法必须受到保护还是私有?我知道如果用于连接数据库的写类,它们必须是受保护的或私有的。但是,一个例子:我正在编写注册类(下面的代码是真的吗?):
private $email;
private $username;
private $password;
private $securitycode;
private function register {
//here registrations codes, may be I must use public function ?
}
另一个例子:我在网站上有新闻栏目,想要获取新闻详情(id,title,text,author)并写新闻类(下面给出的代码是真的吗?):
private $id;
private $title;
private $text;
private $author;
public function get_one_news($this->id) {
//here the code for getting the news, may be I must use protected function ?
}
另一个例子:我想获得一些用户或新闻:我必须使用哪些:公共,受保护或私有功能? 另一个例子:每个用户(已注册或未注册)都可以添加评论(id,comment):我可以使用public $ id;公开$评论?或者我必须使用受保护或私有?
拜托,我需要你的意见。如果我想添加/获取新闻,注册/登录用户,添加/编辑/从数据库表中获取数据,进行文件上载等,使用哪些(公共,受保护,私有属性和函数)? 我无法找到问题的答案。
答案 0 :(得分:0)
你可以这样想。你班级的非私人部分是它与外界的接口。您可以根据需要更改私有内部工作,而无需考虑破坏系统中的其他代码。但是,只要您开始更改非私有部分,就必须根据当前的公共接口考虑代码的所有用户。因此,我认为作为一般经验法则,您应该尝试使代码尽可能保密。因为您可以大大增加代码库的封装,允许您更改内部实现详细信息,而不会影响使用您的类的代码。 / p>
因此,在第一步中考虑新课程应为其用户提供的功能。这应该成为它的公共接口。然后考虑一下你的类是否应该继承,以及应该允许哪些部分在其子类中进行更改。其他所有内容都应该是私有的,因为它是类内部实现。