【问题标题】:PHP Object Oriented Programming - When to use Public, Private, or Protected [duplicate]PHP 面向对象编程 - 何时使用公共、私有或受保护 [重复]
【发布时间】:2020-08-10 16:03:28
【问题描述】:

在过去的几天里,我学习了 PHP 的 OOP,并创建了一个登录注册系统。何时应该使用privateprotectedpublic 来初始化参数?例如:假设我正在创建一个密码参数:

protected $password;

我应该使用哪个深度,或者使用公共深度不会造成安全风险?

另外,是否有任何经验法则可以确定使用哪个深度?不好意思,我刚开始学习OOP

【问题讨论】:

标签: php oop parameters


【解决方案1】:

因为这被认为是基本的 OOP 知识,所以会大量反对,因此如果您对此感到困惑,您可能需要考虑更多地阅读 OOP。 我建议如下:

https://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762

https://www.tutorialspoint.com/php/php_object_oriented.htm

至于你的问题:

这些参数对于继承以及您可以在类的内部外部使用什么很重要。

private 是最封闭的设置,您无法访问或与标记为私有的任何内容(方法或变量)交互。尝试创建一个具有回显某些内容的虚拟函数的类。如果您从类的 within 调用此函数,假设在构造函数中(使用$this->myfunc() 表示法),它将根据需要回显。但是,如果您初始化该类并尝试使用箭头符号 ($myclass = new Myclass(); $myclass->myfunc();) 调用相同的函数,它将无法正常工作,因为您正在尝试从外部访问私有成员。

protected 是相同的概念,但您可以从子类访问受保护的成员(如果您不确定,请查看子类和继承,这超出了本问题的范围)

public 但是您可以在课堂外或课堂内访问它。

根据经验,我通常会将我知道不想或不应该从外部调用的任何东西设为私有(除非有进一步的继承)。其他任何东西都可以公开。例如,我编写的很多代码将包括必须编写一个基类来执行某个扩展过程,例如克隆一个 github 存储库并在我们的服务器上使用它更新文件。任何属于此过程的部分(克隆功能、访问特定位置的功能等)都被制作为private,因为它们是应该永远必须调用的工作流的一部分自己(当然有例外,但这是一个实践问题)。但是,如果我有帮助者,让我们看看 github 存储库是否可访问,我不妨将其公开,因为我们是否要开始更新过程的条件可能是首先确定存储库是否可访问大部头书。这当然不是一个很好的例子,但我希望它有所帮助。

【讨论】:

  • 我很想知道为什么我的答案是错误的?因为我决定教育而不是提及不相关的问题?
  • 默认情况下,downvote 并不意味着“答案是错误的”。有一些 SO 用户不同意一开始就回答“糟糕”问题的做法。 @Qirel 链接到的线程,一个已经在 SO 上的答案,似乎涵盖了 OOP 初学者在公共/受保护/私有方面需要说的所有内容,包括示例。然后,在某人看来,不要将反对票视为“答案错误”,而是“回答行为错误”。不重复答案被认为是一种很好的做法,而是在一些存在的地方链接到现有答案。
猜你喜欢
  • 2010-11-04
  • 2021-01-19
  • 1970-01-01
  • 2012-06-02
  • 2019-02-14
  • 2023-04-08
  • 2011-06-19
  • 2013-03-15
  • 2017-12-19
相关资源
最近更新 更多