PHP 的怪癖和陷阱

标签 php

<分区>

我意识到,尽管我的大部分经验都来自于编写 PHP 应用程序,但我发现自己时常会犯“初学者错误”。这是因为 PHP 是一种非常有机地发展起来的语言,因此有一些我不知道的特质、怪癖和陷阱。

我希望这个问题成为所有想了解 PHP 的陷阱和我们可能认为是规则的异常(exception)情况的人的 wiki。但是,请不要写这样的笼统回复:

Some functions receive arguments as $needle, $haystack, while some as $haystack, $needle.

说出函数名。你有我的一些答案作为例子。哦,每个答案添加一个陷阱。这样我们就可以看看谁是他们中最受鄙视的(通过投票)。

我不想挑起口水战,切入主题。如果您想写一些关于 PHP 的坏话,请将其作为对相应答案的评论。

希望这个 wiki 能对我们所有人,初学者和专家有所帮助。

更新:

在 Andrew Moore 的评论之后,我认为答案还应该包含针对该陷阱的解决方案或解决方法。

最佳答案

序列化处理 XML 结构的对象然后反序列化它们不会恢复原始 XML 结构:

$dom = new DOMDocument;
$dom->loadXML('<test/>');

$dom = serialize($dom);
$dom = unserialize($dom);

var_dump($dom->saveXML());
// $ Warning: DOMDocument::saveXML(): Couldn't fetch DOMDocument in ...
// $ NULL

与 SimpleXML 对象类似。

关于PHP 的怪癖和陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1105423/

相关文章:

php - latex 不能在 php exec() 中工作

php - cakephp中多个模型的单一分页

javascript - Angular js,关于ng-change如何更新其他选择控件的选项

php - PHP高级搜索

php - 在 PHP 中显示带有两位数和月份名称的月份

php - PHP 中的 HTML DOM 操作

php - 在 mac 上安装 mariaDB

php - Magento 中的 isBundle()?

php - 我如何在 php 中使用 sql 进行编辑

php - 通过从表中传递多个分隔的逗号 id 获取记录,其中 id 在 mysql 表中也是逗号分隔的