【问题标题】:How to make a class property private in PHP4?如何在 PHP4 中将类属性设为私有?
【发布时间】:2011-01-15 20:49:37
【问题描述】:

在 PHP4 中没有 public、private 等。所以我想知道是否有某种解决方法,以便我可以将类的属性设为私有,并且只能通过 getter/setter 访问

谢谢!!

【问题讨论】:

  • 你为什么还在使用 PHP4?三年前就停产了! us.php.net/archive/2007.php
  • 这是最重要的问题。这是关于语言理论,还是关于编写实际的新代码?
  • 大量共享主机仍然只支持 PHP 4,但要轻松升级到 PHP 5 并不总是可行的。旧版仍然需要维护。
  • @Toby Allen .. 任何尚未升级的网站都值得离开,客户需要向糟糕的主机发送消息。我们不是在谈论几周或几个月,而是在谈论他们可以免费升级的停产产品的年份。唯一的障碍是他们自己的懒惰,更不用说速度改进(意味着每台服务器的客户更多)和安全修复。
  • @TravisO 供应商不升级的主要原因是担心当数百个 PHP4 应用程序突然停止工作或开始表现得滑稽时,暴徒会烧毁数据中心。尽管如此,PHP4 还是有时间的,我们都喜欢它,现在需要让它休眠。遗留应用程序真的应该被移植,因为在不受支持的平台上继续运行它们的安全风险是巨大的。见stackoverflow.com/questions/1734072/…

标签: php oop php4


【解决方案1】:

您可以使用明显不鼓励使用此类属性的独特语法来解决此问题。您可以借用以下划线开头的方法名称的python语法将其定义为私有。

当然,这不会阻止任何人使用它,但不鼓励使用它。

【讨论】:

    【解决方案2】:

    你不能。由于该属性本身是公开的,因此任何人都可以在没有 getter / setter 的情况下访问它,从而阻止您在两者之间实际执行任何检查。

    【讨论】:

      【解决方案3】:

      无法完成,抱歉。

      当然可以通过构建自己的 getter 和 setter 函数并保留一个表来记录哪些属性是私有/公共/受保护的,但现在几乎不值得努力了,是吗? PHP 4 确实过时了,请参阅here

      【讨论】:

        【解决方案4】:

        您仍然可以为该变量编写 getter 和 setter,但在 PHP 4 中无法将函数设为私有。

        【讨论】:

          猜你喜欢
          • 2011-10-23
          • 2020-01-26
          • 1970-01-01
          • 1970-01-01
          • 2013-01-13
          • 2015-06-09
          • 2018-07-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多