我正在分析WordPress代码并且意识到WordPress不是面向对象的。我不确定我是否正确,因为我是编程新手。如果我是对的,为什么一个主流和最受欢迎的开源软件'使用OOP作为编程方法?
答案 0 :(得分:5)
Wordpress组件使用面向对象编程和程序编程的混合,但总的来说,软件不是根据OO原则从头开始构建的。
这很可能是因为Wordpress早于PHP演变为面向对象语言,其贡献者选择维护与其早期版本一致的架构,而不是从头开始完全重建和重组。重组将使升级网站变得更加困难,并且需要完全重建许多插件和主题。
Wordpress的受欢迎程度可能更多地与它允许那些没有编程技能的人轻松构建各种网站和简单的Web应用程序有关,从最终用户的角度来看,它的表现相当不错。对于那些希望通过构建基于Wordpress核心代码的插件和主题来利用其受欢迎程度的开发人员来说,它也是非常“可上钩”的。
从来没有一个软件工程师聚集在一起,决定他们会支持哪个CMS,因为它是纯粹,干净和漂亮的代码库。如果有,他们可能不会选择Wordpress。
答案 1 :(得分:1)
WordPress不是面向对象的很大一部分原因是它早在PHP真正很好地支持OOP之前就已经有15年的历史了。它也从未进行过“大重写”,从而允许Drupal(类似的旧CMS)在版本8中完全正常运行。WordPress作为组织/机构非常反对“大重写”,所以我猜想WordPress永远不会真正成为一个“适当的OOP系统”。
由于WebSpanner said,WordPress的普及几乎不归功于其开发人员的经验,而归因于最终用户的经验。为此,基于事件驱动的WordPress挂钩系统运行良好。它使代码有些草率,但大多数WordPress用户并不在意。
我也想强调一下(就像我在my fuller article responding to this question中所做的那样),WordPress确实有很多对象。但是正如您认识到的那样,包含对象与“面向对象的系统”的方式有所不同。尽管我认为WordPress可能会继续在PHP代码中包含更多对象,但我怀疑距成为“面向对象的系统”还有10年(如果有的话)。