PHP地雷的一般[已关闭]

2022-08-30 13:14:19

其他人在编写PHP Web应用程序时发现了哪些惊喜?编译时类继承有一个众所周知且需要解决的问题,但我知道其他几个问题,并希望尝试建立该语言的顶级陷阱列表。

注意:

我作为高级PHP5开发人员担任过多个职位,因此PHP工作支付了我的账单,这个问题并不意味着PHP作为一种语言的崩溃,因为我使用过的每种语言都有一些众所周知或不为人所知的惊喜。


答案 1

我不确定这是否算数,但是编译PHP脚本的需求是一个巨大的性能问题。在任何严肃的PHP项目中,您都需要某种编译器缓存,例如APCeAcceleratorPHP Accelerator或(商业)Zend平台


答案 2

递归引用泄漏内存

如果创建两个对象并将它们存储在彼此的属性中,则垃圾回收器将永远不会接触它们:

$a = new stdClass;
$b = new stdClass;
$a->b = $b;
$b->a = $a;

当一个大类创建一个通常存储主类的小型帮助器对象时,这实际上很容易做到:

// GC will never clean up any instance of Big.
class Big {
  function __construct() {
    $this->helper = new LittleHelper($this);
  }
}
class LittleHelper {
  function __construct(Big $big) {
    $this->big = $big;
  }
}

只要PHP针对的是短的快页面请求,他们就不太可能解决这个问题。这意味着PHP不能被依赖于守护进程或其他具有较长寿命的应用程序。


推荐