在编写PHP代码时,混合使用面向对象风格和过程式风格是否可行?

11

以前我总是使用过程式编写PHP代码,例如:

mysqli_connect


mysqli_prepare

现在我不小心开始混淆一切,例如我可能会做这样的事情:

mysqli_connect();

这是一个过程式编程风格,然后是下一个命令:

$mysqli->prepare();

这是面向对象的风格。

我的代码仍然可以工作,但是如果我查看php.net时,它显示的示例要么是面向对象的,要么是过程式的。所以我想问一下,我能否同时使用面向对象和过程式的php代码。提前谢谢!

3个回答

15

编程方式完全取决于你的决定和独特风格,但我认为在决定过程式、面向对象或混合时需要考虑一些因素。

程序规范 -

首先,如果你是团队中的一员,为他人编写程序或遵循自己的规范,请考虑是否已经做出了选择。

可用性 -

让我们面对现实吧。有时最好的库只能以面向对象或过程式的形式提供,而不是两者兼备。在这种情况下,从一种风格转换到另一种风格将需要使用完全不同的库,或者自己构建一个类或函数库。一个可用的库可能会节省你的时间,唯一的抵消成本是在主要面向对象程序中使用过程式函数,或者反之亦然。

熟悉度 -

与可用性类似,你可能更熟悉某个类或一组函数。虽然你可能有时间停下来学习一个新的类模块以增加你的知识,但你可能可以通过使用已经学习并经过充分测试的过程式库来节省时间。因此,如果你正在按时完成工作,你可能希望选择更熟悉的库。然而,如果你正在研究和学习,那么你可能需要花时间阅读文档、安装和测试一个新的解决方案。

数据处理和速度 -

还有一个需要考虑的因素是如何处理数据。如果数据在类内部,则该类可能会有操作数据的方法。在这种情况下,过程式编程需要从类或对象中获取数据,对数据进行操作,然后更新对象。在我看来,更好的设计是将函数包含在对象中。

但是,如果您的所有数据处理都在类外部,则使用函数可能会更快。如果您想使用类方法,则必须加载类,并可能创建对象。即使是静态方法也可能比函数慢。因此,如果速度是一个考虑因素,例如在循环中,请考虑程序和PHP需要经过多少步骤才能到达函数、类或对象。

展望未来 -

如果您想在过程式编程和面向对象编程之间进行选择,则尝试预测哪种方法将来最有用。我发现面向对象编程非常有用,可以创建可重用的代码。我发现过程式编程非常适用于命令行代码以及组织和使用对象。随着计算机科学的发展,这些可能会保持不变,因此我以前做过的工作更有可能再次有用。

相反,一些库和编程语言可能会鼓励一种风格。PHP支持这两种风格。但如果我的总体印象准确的话,那么PHP一直朝面向对象的方向发展。如果在PHP函数和对象之间选择,请查看函数是为哪个版本的PHP创建的。还要检查一下过程式函数是否已经过时或即将被淘汰。如果是这样,请使用面向对象的方法,因为当这些过程式函数不再受支持时,这将使您的程序更有用。
希望这提供了一些考虑。谢谢。

3

同时使用两种方式不会破坏您的代码,从技术上讲是“可以的”,但请考虑将来您或其他人维护应用程序时的情况。如果代码一致和清晰,阅读起来更容易,并且通过现在选择并坚持一种方法(最好采用面向对象编程),您将节省很多时间。


2

我只是想确认无论如何这都能正常工作。如果无论如何它仍然可以工作,那么我选择第二个选项 :)。 - edwardtyl
在大多数以OOP为主的php项目中,总会有至少一点过程式代码(因为必须有某个东西来实例化第一个对象并开始运行)。 - Orangepill
实际上,您应该使用最适合您对问题的心理模型的编码风格。 - Orangepill
1
@edwardtyl - “无论如何都要工作”是一个非常广泛的术语 :) 在将来处理代码时,保持一致的方法可以帮助。但我肯定会承认,在审查旧代码时,有很多“我当时在想什么”的时刻。如果您将其保留为原样,也许这将成为您的其中之一 ;) - markdwhite
1
@markdwhite 是的。6年后,现在实际上在这个领域工作并且理解事情,我意识到我当时是多么的愚蠢 - 但这都是学习的一部分 :) - edwardtyl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接