我想开发一个php模块系统像pypi或宝石。最大的问题是班级的多版本。php多版本的类
如果存在缓存模块,并且被其他模块所依赖,则更新一天缓存模块,例如,先前版本为0.1,现在更新为0.2。依赖于此缓存模块的模块可能无法正常工作。
覆盖此问题的一种方法是限制模块无法更改api。只能添加新的方法或更改方法的内部工具。但它仍然可能会导致问题,例如:1.0工作正常,当更新到2.0时,导致未测试如此好,带来一些新的错误。
多级版本是处理这个问题的更好的方法。但似乎很难使用没有命名空间的php。或
class Cache1 {}
class Cache2 {}
//...
它对于模块开发人员和用户都不那么方便。
有没有什么建议?
编辑
的情况下,数据库和验证模块都依赖缓存模块,但DB依靠缓存1.0,权威性依靠缓存2.0,原因缓存2.0添加了一些新的方法,如果他们两个模块并且都称为“类缓存”,则会出现类似“无法重新声明类缓存”的错误。如果只是更新缓存到2.0,数据库模块可能爆发(数据库模块可能只需要依靠缓存1.0,因为它只是工作)
不要暗示“微软在它做得很好”,但是他们的WCF版本控制指示使用与您所提及的命名方案相同的接口。另外,PHP5现在有接口和命名空间(如果有帮助的话)(尽管你只能将版本5作为目标),(可以说)你可能应该对新项目做任何事情)。 – 2011-02-22 21:01:26