Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
OOP值得在PHP中使用吗?_Php_Oop_Performance_Procedural - Fatal编程技术网

OOP值得在PHP中使用吗?

OOP值得在PHP中使用吗?,php,oop,performance,procedural,Php,Oop,Performance,Procedural,关于面向对象编程是否好有很多争论。但是,在Php中使用OOP速度较慢。使用程序化编程和更快的速度,以及速度较慢的OOP(因为每次加载页面时都必须启动类,大型网站将开始变慢),这是否是一个好的交易 更重要的是,将内容封装在类中并使用静态函数是好的,还是只使用许多带有前缀ex:wp_function()的说谎函数更好。是的,使用OOP几乎总是一个好主意。这是因为OOP是一种编码风格,而编码风格在大多数情况下很容易被跨语言传输 人们不使用编码风格,因为他们使用某种语言。人们使用编码风格是因为编码风格提

关于面向对象编程是否好有很多争论。但是,在Php中使用OOP速度较慢。使用程序化编程和更快的速度,以及速度较慢的OOP(因为每次加载页面时都必须启动类,大型网站将开始变慢),这是否是一个好的交易


更重要的是,将内容封装在类中并使用静态函数是好的,还是只使用许多带有前缀ex:wp_function()的说谎函数更好。

是的,使用OOP几乎总是一个好主意。这是因为OOP是一种编码风格,而编码风格在大多数情况下很容易被跨语言传输

人们不使用编码风格,因为他们使用某种语言。人们使用编码风格是因为编码风格提供了很好的方法来做他们认为需要的事情。因此,只要存在基本元素(继承、类属性等),就可以用这种编码风格编写代码

不,使用过程函数访问它们可能不是一个好主意。这是因为,你可能需要做一些类似的事情来维持这个状态

function myFunc()
{
    global $class;
    $class->doMethod();
}

function myFunc2()
{
    global $class;
    $class->doMethod2();
}

这是一个坏主意,因为它创建了大量的全局状态。

如果您担心将OO与PHP结合使用的原因是速度,那么不要担心:PHP是一种速度很慢的语言。如果您正在做的事情是处理器密集型的,足以让使用对象造成的速度损失变得重要,那么您根本不应该使用PHP


关于静态函数,这是一种设计选择,但我会避免完全由静态函数组成的类。与前缀相比,它实际上没有什么优势,仅仅因为它不是一个好主意就使用一个构造。

OOP的优点比它的缺点多。另请参见。

是,随着应用程序的增长。。(而且会)这会让你少受几个小时的挫折。重复你自己(到处复制粘贴代码)…)

在我看来,PHP开发人员不应该只朝一个方向努力。(过程与面向对象)在某些情况下,您所需要的只是一些全局函数,而在其他情况下,使用对象更为有利。不要试图以这种或那种方式强迫一切,要灵活,在每种情况下使用最有效的方法。

我强烈不同意Cha102的答案

对这个问题的正确回答会填满好几本书——更不用说这里有一篇20行的帖子了

这两种方法各有优缺点。我建议任何人都认为自己是一个优秀的程序员,在程序化、非程序化和面向对象编程方面有着丰富的经验。以及使用不同方法(如SCRUM、cascade和RAD)的经验

关于PHPs对OO和过程编码的适用性,语言的根源当然是后者(但请注意,Java和ASP都是混合语言,而不是真正的OO语言)

就个人而言,当我需要生成一些非常简单的东西或者必须有经过深思熟虑的定义和可预测的行为时,我倾向于编写过程代码。然而,当编写复杂的代码时,运行时的行为会有很大的不同,我发现OO在开发人员时间方面要高效得多——尽管设计是基于有限的用例集

您应该始终编写过程代码,因为它比OO代码运行得更快:

1) 这不一定是真的 2) 完全忽略了开发人员时间和硬件成本的相对成本

将内容封装在类中并使用静态函数是否好

鉴于PHP中现在可以使用名称空间,这是一种避免名称空间冲突的非常混乱的方法,我不推荐这种方法


<关于客观C和C++的性能参数的相同论证。解决这个问题的办法是利用可用的内存和处理能力,这些内存和处理能力在不断变大、变好、变快

是的,OO需要更多的资源来运行。但使用OO的好处超过了支持OO应用程序的硬件成本$$(这可能微不足道)

然而,关注软件性能是一件好事。然而,将程序vs.oo视为起点有点误导。首先,您需要专注于编写高效的代码,无论是过程代码还是面向对象代码(两者都是相关的)

请记住,尽管PHP可能不是最快的平台(例如Java),但PHP被用于支持互联网上一些流量最大的网站:即Facebook


如果您对PHP和OO还有任何其他疑问,请查看Zend和Magento(基于Zend)。Magento是一个资源非常密集的平台,每个实例的内存使用量可能高达36MB。然而,该平台本身能够处理数百万次点击。这是因为一个正确配置的服务器环境和一个健康的硬件资源服务使得使用OO的所有好处远远超过了服务器本身的成本。但是在一个集群计算机的世界里,不(负责任地)使用你可用的处理能力和内存是——嗯——临床上的精神错乱。

确实没有完美的答案,因为它取决于这么多未知变量,因此它不必是全部或全部

例如,如果您将应用程序拆分为MVC模型,那么您的模型可能是面向对象的,但控制器的过程更简单

您可以使用类作为一种简单地对常见静态函数进行分组的方法,也可以将其进一步引入活动记录模式

如果您正在构建一个可以在电子邮件中发布帖子的小型单页Web表单,那么您真的不需要OO——以免您可能包含一个现有的邮件类来利用它

诺博德
class game{
  function maxp($val){
    return max(0,pow($val,0.5));        
  }
}

$game = new game;

for($i=0;$i<100000;$i++){
  $game->maxp(100);
  //game::maxp(100);
}