PHP面向对象编程-何时使用公共、私有或受保护

PHP面向对象编程-何时使用公共、私有或受保护,php,oop,parameters,Php,Oop,Parameters,在过去的几天里,我学习了面向对象的PHP编程,并创建了一个登录注册系统。什么时候应该使用private、protected和public初始化参数?例如:假设我正在创建一个密码参数: protected $password; 我应该使用哪种深度,或者使用公共深度不构成安全风险 还有,是否有经验法则来确定使用哪种深度?恕我直言,我刚刚开始学习OOP < P>下注将被投入,因为这被认为是基础级OOP知识,所以如果你为此而挣扎,你可能会想更多地阅读OOP。 我建议如下: 关于你的问题: 这些参

在过去的几天里,我学习了面向对象的PHP编程,并创建了一个登录注册系统。什么时候应该使用
private
protected
public
初始化参数?例如:假设我正在创建一个密码参数:

protected $password;
我应该使用哪种深度,或者使用公共深度不构成安全风险


还有,是否有经验法则来确定使用哪种深度?恕我直言,我刚刚开始学习OOP

< P>下注将被投入,因为这被认为是基础级OOP知识,所以如果你为此而挣扎,你可能会想更多地阅读OOP。 我建议如下:

关于你的问题:

这些参数对于继承以及类内外可以使用的内容非常重要

private
是最封闭的设置,您无法访问或与标记为private的任何内容(方法或变量)交互。尝试创建一个带有伪函数的类,这个伪函数可以回响某些内容。如果您从类中调用该函数,比如在构造函数中(使用
$this->myfunc()
符号),它将根据需要进行响应。但是,如果您初始化该类并尝试使用箭头符号调用同一函数(
$myclass=new myclass();$myclass->myfunc();
),它将不起作用,因为您试图从外部访问私有成员

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

public
但是,您可以在类外或类内访问它


根据经验,我通常会将我不想或不应该从外部打电话的任何事情(除非有进一步的继承)保密。其他任何东西都可以公开。例如,我编写的许多代码将包括必须编写一个基类来执行特定的扩展过程,例如克隆github repo并在我们的服务器上使用它更新文件。此过程中的任何部分(克隆功能、访问特定位置的功能等)都是私有的,因为它们是工作流的一部分,不必单独调用(当然也有例外,但这是一个实践问题)。但是如果我有助手,比如说看看github repo是否可以访问,我也可以将其公开,因为我们是否要启动更新过程的一个条件可能是首先确定我是否可以访问该repo。这当然不是一个很好的例子,但我希望它能有所帮助。

同样的问题,但与Java有关。同样相关的,这应该是一个有趣的阅读:我很想知道为什么我的答案是错误的?因为我决定接受教育,而不是提及一个无关的问题?默认情况下,否决票并不意味着“答案是错误的”。对于那些不同意从一开始就回答“糟糕”问题的用户来说,这是一种一致的做法。@Qirel链接到的线程(答案已经在上面了)似乎涵盖了面向对象编程初学者在public/protected/private上需要说的所有内容,包括示例。然后,在某些人看来,否决票不是“答案是错误的”,而是“回答的行为是错误的”。不重复答案被认为是很好的做法,而是在存在答案的地方链接到现有答案。