【问题标题】:PHP - Safely replace a classPHP - 安全地替换一个类
【发布时间】:2013-03-14 08:32:46
【问题描述】:

假设我做了一个类:

class abc {
   function a() { .. }
}

将来,比如说更新,我制作了这个类的更新版本,所有相同的函数加上一些新函数和私有变量:

class abc2 {
    function a() { .. }
}

现在,我想要的不是更新我的整个代码来查找旧类 abc 并将其替换为 abc2,有什么办法可以在我的旧代码中使用 abc 的对象被调用,它应该返回abc2。这样我就不必在我的代码中更新所有 abc 实例的类名。

我知道我可以在 abc2 类中使用 extends 关键字,但我担心我的私有变量或函数将无法访问。

【问题讨论】:

  • 在你的 ide 中重构?
  • 使用接口怎么样?
  • @Guy,真的不知道使用接口:(
  • 使用接口、工厂模式、测试并阅读有关模式和重构的信息,Luke。 :^)

标签: php class extends


【解决方案1】:
class abc extends abc2 {
// don't add any methods or whatever
}

class abc2 {
   function a() { .. }
}

这样,abc2 的所有方法都与 abc 相同。至于私人问题,没有简单的方法可以解决。要么重写所有代码以修复类,要么保护私有方法。至少尝试使用这个extend方法,看看有没有冲突,我当然不希望这样。

一个解决方案是拥有命名空间,您可以在其中重新编码以使用 newnamespace\abc;而不是 oldnamespace\abc;在你的代码中。然而,这也意味着重写代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2020-01-04
    相关资源
    最近更新 更多