background image

词)。如果你要使用相反的功能,你要用到它的小弟弟 html_entity_decode。由于某些特殊的
原因,这个函数名是由下划线分隔单词。怎么能这样呢?你知道有一个函数叫 strpad。或者
他是 str_pad?每次你都要查看一下到底这个符号是什么或者直接等他出现一个错误。函数
是不分大小写的,所以对于 PHP 来说 rawurldecode 和 RawUrlDecode 之间没有什么区别。
这也很糟糕,因为两个都使用到了同时他们看上去还不一样,混淆了阅读者。

8. 魔法引用的地狱

魔法引用(Magic quote)可以保护 PHP 脚本免受 SQL 注入攻击。这很好。但是出于某些原因,
你可以在 php.ini 中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法

引用是开启还是关闭。这样一个 特性 应该让编程更简单,而事实上变得更复杂了。

9. 缺少标准框架

一个成长中的网站没有一个整体框架,最终会变成维护的噩梦。一个框架可以让很多工作
变得简单。现在最流行的框架模型时 MVC-模型,在其中表现层、业务逻辑和数据库访问
都分离开了。
很多 PHP 网站不使用 MVC-模型。他们甚至没有一个框架。甚至现在有一些 PHP 框架同时
你都可以自己写一个,关于 PHP 的文章和手册没有提高框架的一个字。同时 JSP-开发人
员使用像 Struts 的框架、ASP 开发人员使用.net,看起来好像这些概念都广泛被 PHP 开发
人员所了解。这就说明了 PHP 实际上到底是多专业。

总结

什么问题?
对于非常小的项目,它可以是一个十分符合人意的编程语言。但是对于较大的和更为复杂
的项目,PHP 就显出他的薄弱了。当你不断地摸索之后,你会发现我提到的某些问题的解
决方案。所以,当解决方案已知之后,为什么不能修正他呢?另外为什么这些修补不在手
册中提到呢? 一个开源的语言十分流行是一件好事。但不幸得是,它不是一个伟大的语言。
我希望所有的问题能有一天得到解决(也许在 PHP6?),然后我们就将拥有一个开源语言,
他既开源,又好用。
到现在,当你要启动一个多于 5 个脚本页面的项目的时候,你最好考虑 C#/ASP.NET 或者 
Java/JSP 或者也许 Python 同样是一个更好的选择。