PHP的优缺点是什么?

4

昨天在面试中被问及PHP的三个优点和三个缺点。这是一个初级职位,面试官并不期望所有问题都能被回答/回答正确。

我主要是业余的Web开发者,那么PHP的优点和缺点是什么呢?


1
没有明确的答案。如果有的话,可能应该是社区维基。 - Nathan Taylor
2个回答

10

优点:

  1. PHP无处不在,在每个系统/服务器上都有,这意味着您不必担心安装问题。
  2. 它很受欢迎,有大量的开发者社区,这意味着您可以轻松获得帮助并找到可重用的脚本。
  3. php.net是一个相当不错的资源。

缺点:

  1. 它缺少其他语言已经有几十年的功能。直到最近最流行的版本中仍然缺少闭包、匿名函数和命名空间。虽然在5.3+中可以使用这些功能,但它们并不常用。
  2. 函数名称不一致,函数参数排序不一致。没有命名空间时变得混乱。
  3. 缺乏Unicode支持。
  4. PHP4缺乏面向对象支持,尽管官方已经停止维护,但仍被广泛使用,这意味着对于一些客户端工作,您不得不为PHP4编写可怕的面向对象代码,因为您无法控制托管。
  5. 不支持线程安全,不能利用Apache2的多线程模式。
  6. 奇怪的魔术引号。

PHP是线程安全的,除非您在编译时没有启用线程安全性。如果您不在线程环境中使用它,才会这样做。 - Artefacto
@Artefacto - 核心可能是线程安全的,但使用Worker MPM与PHP不太实际,因为大多数库都不是线程安全的。这就是为什么你几乎必须使用带有PHP的prefork。也许在5-10年内,PHP社区会在这方面赶上其他语言。无论如何,您是否同意其他缺点? - meder omuraliev
@Artefacto - PHP何时引入了命名空间、Lambda和闭包?请估计有多少PHP发行版支持这些特性? - meder omuraliev
@Artefacto - 我不确定mbstring如何与其他语言相比使Unicode易于管理。如果mbstring如此出色,为什么他们要尝试重新整理PHP6的整个Unicode部分呢?魔术引号在PHP的大部分生命周期中一直是一个问题,仅仅因为最近的版本已经修复了它,并不意味着它在现代开发中仍然不是一个问题,因为成千上万的服务器仍然启用它。 - meder omuraliev
@Artefacto - 你使用Apache吗?如果是,你使用mpm worker还是prefork?为什么? - meder omuraliev
显示剩余2条评论

2

我喜欢 Jonas Maurus 写的关于 PHP 的缺点的 这篇文章

总的来说,PHP 的优点是:

  • PHP 让初学者更容易完成任务
  • PHP 安装简单

缺点: 基本上其他所有方面都有问题。不过 Jonas 给出了很好的理由说明它们为什么是缺点。


有人可能会认为好的方面是坏的方面的催化剂。 =D - Nathan Taylor
-1 那篇文章包含错误信息,而且已经过时了。 - Artefacto
@Artefacto - 它包含了哪些错误信息? - meder omuraliev
@meder 首先,大部分文章都是关于 PHP 4 的抱怨,而 PHP 4 已经死亡很久了,并且不再由发行版捆绑。然后,作者显然不知道 PHP 中的引用是什么(并使用 PHP 4 代码)。线程安全:见上文。至于无符号整数... Java 也没有它们,并且在 C 中避免使用它们(出于特定原因)。它们真的不是那么需要的。unpack 的评论也很愚蠢;unpack 有一些与机器相关的选项(用于性能)和与机器无关的选项。 - Artefacto
@meder 其他要点:松散的类型系统总会有一些人觉得奇怪的转换;回顾一些转换确实很奇怪,比如 "4dd" == 4 是真的,但是总体上攻击这个概念只是不同意额外的灵活性不值得它的问题。最后,我不知道他所说的 XML 字符集问题是什么意思。可能是一个已经修复的 bug 或者是一个不知道自己在做什么的人。 - Artefacto

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