0

假设我做了一个类:

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

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

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

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

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

4

1 回答 1

4
class abc extends abc2 {
// don't add any methods or whatever
}

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

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

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

于 2013-03-14T08:36:53.020 回答