【问题标题】:In which situations use public, protected, private (php oop)在哪些情况下使用public、protected、private(php oop)
【发布时间】:2016-03-02 01:36:48
【问题描述】:

我正在学习 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、标题、文本、作者)并编写新闻类(下面给出的代码是真的吗?):

 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,评论):我可以使用公共$id吗?公共$评论?还是我必须使用受保护的或私有的?

拜托,我需要你的建议。如果我想添加/获取新闻、注册/登录用户、添加/编辑/获取数据库表中的数据、进行文件上传等,使用哪个(公共、受保护、私有属性和函数)? 我找不到我的问题的答案。

【问题讨论】:

标签: oop private public protected


【解决方案1】:

你可以这样想。类的非私有部分是它与外界的接口。您可以随心所欲地更改私有内部运作,而无需考虑破坏系统中的其他代码。但是,一旦您开始更改非私有部分,您就必须根据您当前的公共接口考虑代码的所有用户。所以我认为作为一般的经验法则,你应该尽量让你的代码尽可能私有。这样你可以大大增加你的代码库的封装,允许你在不影响使用你的类的代码的情况下更改内部实现细节。

因此,首先要考虑您的新类应该为其用户提供哪些功能。这应该成为它的公共接口。然后考虑是否应该继承您的类以及应该允许在其子类中更改哪些部分。其他一切都应该是私有的,因为它是类的内部实现。

【讨论】:

  • 所以我只能使用 protected 或 private 会更好?
  • @CavidKərimov 不一定。想想其他班级应该能够对你的班级做什么。例如。与您的新闻类,其他人应该如何处理它? (向一个特定的新闻实例询问一个文本repesentation,询问它的新闻类别,......)。这些应该是该类的公共方法。
猜你喜欢
  • 1970-01-01
  • 2017-05-29
  • 2017-08-21
  • 2019-08-07
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
相关资源
最近更新 更多