Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP编码中混合使用面向对象风格和过程风格是否可以接受?_Php_Object_Styles_Procedural - Fatal编程技术网

在PHP编码中混合使用面向对象风格和过程风格是否可以接受?

在PHP编码中混合使用面向对象风格和过程风格是否可以接受?,php,object,styles,procedural,Php,Object,Styles,Procedural,所以之前我总是使用过程风格来编写php,例如: mysqli_connect 或 现在我不小心把所有的事情都搞混了,我会做一些类似的事情: mysqli_connect(); 这是程序样式,然后是下一个命令: $mysqli->prepare(); 这是面向对象的风格 我的代码仍然可以工作,但是如果我在php.net中显示示例,那么整个示例要么是面向对象的,要么是过程的。所以我想问一下,我是否可以同时使用对象和过程php代码。提前谢谢你 更糟糕的事情发生在编码领域。有人会说这完全是错

所以之前我总是使用过程风格来编写php,例如:

mysqli_connect

现在我不小心把所有的事情都搞混了,我会做一些类似的事情:

mysqli_connect();
这是程序样式,然后是下一个命令:

$mysqli->prepare();
这是面向对象的风格


我的代码仍然可以工作,但是如果我在php.net中显示示例,那么整个示例要么是面向对象的,要么是过程的。所以我想问一下,我是否可以同时使用对象和过程php代码。提前谢谢你

更糟糕的事情发生在编码领域。有人会说这完全是错误的。而其他人只会得到报酬,并为代码的有效性感到高兴。这完全取决于你想成为什么样的程序员


使用这两种方法不会破坏代码和技术上的“OK”,而是考虑您或其他人对应用程序的未来维护。如果代码是一致的和干净的,读代码就容易多了,以后通过挑选和粘贴一个(最好是OOP)来节省很多时间。

< P>虽然代码完全是您的决策和独特的风格,但在决定程序、面向对象或混合的时候,有几个因素需要考虑。

计划规格-

主要是,如果你在团队中,为他人编写程序,或者遵循自己的规范,考虑是否已经做出了选择。 可用性-

让我们面对现实吧。有时,最好的库可以是面向对象的,也可以是过程的,而不是两者都有。在这种情况下,更改一种样式需要使用完全不同的库,或者自己构建一个类或函数库。一个可用的库可以节省您的时间,唯一的补偿成本是主要面向对象程序中的过程函数,反之亦然

熟悉度-

与可用性类似,您可能更熟悉某个类或一组函数。虽然您可能有时间停下来学习一个新的类模块以添加到您的知识中,但您可以通过使用已经学习并经过全面测试的过程库来节省时间。因此,如果您正在编写时间线,您可能希望使用更熟悉的库。但是,如果您正在研究和学习,那么您可能需要花时间阅读文档、安装和测试新的解决方案

数据处理和速度-

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

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

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

相反,一些库和编程语言可能会鼓励一种风格。PHP支持这两种样式。但如果我的总体印象是准确的,那么PHP已经朝着面向对象风格的方向发展。如果在PHP函数和对象之间进行选择,请查看创建函数的PHP版本。还要检查是否有任何程序功能被折旧或将被废弃。如果是这样,请使用面向对象的方法,因为当这些过程函数不再受支持时,这将使您的程序更加有用


希望这能提供一些考虑。谢谢。

我只是想确保无论发生什么情况,这都能奏效。如果不管发生什么,它仍然可以工作,那么我选择第二个选项:)。在OOP最为繁重的php项目中,总会有至少一点过程代码(必须实例化第一个对象并开始工作)事实上,您应该使用最适合您的问题心理模型的任何编码方式。@edwardtyl-“无论做什么都要工作”是一个相当宽泛的术语:)在将来处理代码时,采用一致的方法会有所帮助。但我可以肯定地承认,在回顾旧代码时,有很多“我当时在想什么”的时刻。如果你保持原样,也许这就是你的一个;)@马克·怀特:是的。6年后,现在我正在实地工作,了解了一些事情,我意识到我当时是个多么愚蠢的人——但这都是学习的一部分:)
$mysqli->prepare();