php - PHP5保护变量背后的推理

标签 php protected

您能解释一下为什么我想在 PHP5 中对某些类变量和方法使用“ protected ”而不是“公共(public)”或“私有(private)”吗?我还没有找到我认为我需要“保护”的情况,并且根据意图选择了“公共(public)”或“私有(private)”。即使在团队中工作时,我仍然没有找到一个案例(根据我迄今为止的知识)为什么“ protected ”对于类变量和方法是必要的。

最佳答案

例如,Flourish library的 fDate 类提供了很多功能,但不是我需要的一切。所以我扩展了自己的类(class)。

我很快发现它的核心内部变量 fDate::$date(自 1970 年以来以秒为单位的时间)是一个私有(private) 属性。这使我不可能在我的子类 ThriveDate 中访问它。一旦 Flourish 的维护者将其更改为 protected 属性,我就能够使用它并因此充分扩展 fDate。

因为你永远不知道谁可能需要扩展你的类,以及扩展多少,在未来,最好让每个内部属性都受到保护,除非有充分的理由让属性永远不会被修改子类

TL;DR:私有(private)属性(property)应该和公共(public)属性(property)一样稀有:例如几乎从不使用。

关于php - PHP5保护变量背后的推理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5397434/

相关文章:

c++ - protected 构造函数的实际用途是什么?

php - 如何在php中获取好友列表?

php - php.ini 中的重复指令是否会导致问题?

java - 无法访问实例化类的 protected 方法

inheritance - 了解 F# 3.0 中 protected /基本成员使用的更改

c++ - 两个单独文件中另一个类的类方法 friend

java - 为什么对象类中有公共(public)方法?他们可以受到保护,并且会以更私密的方式保持相同的行为

php - 这部分代码卡住了我的电脑

php - 使用 $query = mysql_query 选择更多表

php - 使用 pt-online-schema-change 是否可以在代码库部署的 "swap"阶段暂停?