php新手。我正在处理旧代码,我必须在其中添加许多新功能。
代码现在不使用php5的任何面向对象的功能,但我将使用它们并将尝试在空闲时间重构重要和复杂的旧东西。
我有几个问题:
1.作为一个来自java背景的人,从类中访问外部函数的能力似乎是错误的,我必须这样做才能重用旧函数。这是正确的做法吗?...对我来说感觉很不自然,有没有更好的方法来重用旧功能?
2.有人可以建议一些好的设计模式,可以与旧的PHP代码一起使用,使其面向对象,并使其优雅地使用新功能。
答案 0 :(得分:1)
以下是我的想法:
答案 1 :(得分:1)
作为一个来自java背景的人,从类中访问外部函数的能力似乎是错误的,我必须这样做才能重用旧函数
这总是让我对Java感到厌烦。
使用免费功能没有任何错误。 “一切都必须在OOP中的物体中”的口号是完全垃圾;只有在逻辑上适合对象类型的东西才应该如此。
所以不要担心它。
有人可以建议一些好的设计模式,可以与旧的PHP代码一起使用,使其面向对象,并使其优雅地使用新功能。
没有任何设计模式可以为您进行重构。
设计模式不是魔法子弹;这个短语被过度使用,仅仅是描述经常使用的设计惯例的一种方式。如果你真的想要浏览维基百科上的模式列表,但我只是以最合乎逻辑的方式编写你的代码,然后,如果你注意到它恰好符合某人对“设计模式”的想法。 ..好吧,我猜你好!
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用facade pattern封装对旧代码的访问权限,以便在代码和旧代码之间提供干净的界面。
我用相当糟糕的遗留代码完成了这一切(我的,我很惭愧地说!),重写不是一个选项。
我完成了一个很好的干净界面,可以轻松修改,易于阅读。这是非常值得的额外努力,并允许我在我的闲暇时重新调整旧代码,并在时间允许的情况下(仍然在努力)。
答案 4 :(得分:0)
我的想法比什么都重要。
如果在Java中你曾经创建了一个静态方法,比如MyClass :: someStaticMethod(参数),那就像使用'free'函数一样。
这就是静态方法的真正含义。它们可以在全球范围内访问,它实际上只是一个非常长的名称,但除此之外它是一种免费的方法。
你可能把它们放在'类'中,但实际上它是java在有限意义上创建全局函数的方式。如果你这么想,php免费功能看起来并不那么糟糕,因为它们的名字更短。