PHP的问题:全面阐述PHP网站设计的问题(2)_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP的问题:全面阐述PHP网站设计的问题(2)

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:网站设计PHP
黑客防线网安网讯:    PHP  语言核心  CPAN被称为“Perl的标准库”。这并没有对Perl的标准库做过多说明,但它蕴含了健壮的核心可以构建强大的东西的思想。  基本原则  PHP最初很明确的是为非程序...
  
  PHP
  语言核心
  CPAN被称为“Perl的标准库”这并没有对Perl的标准库做过多说明但它蕴含了健壮的核心可以构建强大的东西的思想
  基本原则
  PHP最初很明确的是为非程序员设计的(言外之意非专业程序);根源已经很难脱离。从PHP2.0文档中挑选出来的对话:
  一旦你开始为每个类型区分不同的操作符,你就开始使用语言变得复杂了。例如,你不能为strings使用‘==’,你现在必须用‘eq’。我没看出这点来,特别是那些类似PHP的脚本语言,它们大多数相当简单而多数情况下,作为非程序员,只想要一门包含少量基本逻辑语法的语言,而不想付出过多学习曲线。
  PHP为保持前进不惜代价。什么都有比没有好。
  这不是个正确的设计原则。早期的PHP受Perl影响;大量的标准库参考C使用“out”参数;OO部分的设计像C++和Java.
  PHP从其它语言中引入大量的灵感,但对那些熟知其它语言的人,仍然难以理解。(int)看起来像C,但是int并不存在。命名空间使用。新的数组语法使用[key=>value],不同于任何其它语言定义hash字面量的形式。
  弱类型(例如,默默的自动在strings/mumbers/等间转换)是如此的复杂。
  少量的新特性以新语法实现;大多数工作通过函数或者看起来像函数的东西完成。除了类的支持,这理所当然的需要新的操作符和关键字。
  本页列出的问题都有官方解决方案—如果你想资助Zend修复它们的开源编程语言的话。
  路漫漫,其修远。思考下面的代码,从PHP文档的某地方挑出来的。
  @fopen('http://example.com/not-existing-file','r');
  它將做什么?
  如果PHP使用–disable-url-fopen-wrapper编译,它將不工作。(文档没有说,“不工作”是什么意思;返回null,抛出异常?)
  注意这点已在PHP5.2.5中移除。
  如果allow_url_fopen在php.ini中禁用,也將不工作。(为什么?无从得知。)
  由于@,non-existentfile的警告將不打印。
  但如果在php.ini中设置了scream.enabled,它又將打印。
  或者如果用ini_set手动设置scream.enabled.
  但,如果error_reporting级别没设置,又不同。
  如果打印出来了,精确去向依赖于display_errors,再一次还是在php.ini.或者ini_set中。
  我无法告诉你这个函数调用的行为,如果没有查看编译时标志,服务器端配置,和我的程序中的配置的话。这些都是内建行为。
  该语言充满了全局和隐似状态。mbstring使用全局字符编码。func_get_arg之类的看起来像正常的函数,但是只对当前正在执行的函数操作。Error/exception处理默认是全局的。register_tick_function设置了一个全局函数去运行每个tick(钩子?)—-什么?!
  没有任何线程支持。(不奇怪,因为上面已给出。)加之缺乏内建的fork(下面提到),使得并行编程极其困难。
  PHP的某些部分在实践中会产生错误代码。
  json_decode对不正确的输入返回null,尽管null也是一个JSON解码的合法对象—该函数极不可靠,除非你每次使用后都调用json_last_error.
  如果在位置0处找到,array_search,strpos,和其它类似的函数返回0,但如果都没有找到的话。会返回false
  让我们稍稍展开最后一部分。
  在C中,函数如strpos返回-1,如果未找到。如果你没检查这种情况,却试着以下标使用它,那將可能命中垃圾内存,程序会崩溃。(也许吧,这是C.谁泥马知道。我确定至少有工具处理它)
  话说,Python中,等效的.index方法將抛出一个异常,如果元素没找到的话。如果你不检查该情形,程序將崩溃。
  在PHP中,该函数返回false.如果你把FALSE作为下标使用,或者用它做其他事情,PHP会默默的將它转成0,但除了用于===比较。程序是不会崩溃的;它將执行错误的逻辑,且无任何警告,除非你记得在每个使用strpos和其它类似函数的地方包含正确的样版处理代码。
  这真是糟透了!编程语言只是工具;它们是为我服务的。这里,PHP给我布下了陷阱,等着我跳进去,而我不得不时刻警惕这些无聊的字符串操作和相等比较。PHP是个雷区。
  我已经听过很多关于PHP解析器的故事,它的开发者来自世界各地。有从事PHP核心开发工作的人,有调试PHP核心的人,也有和核心开发者交流过的人。没有一个故事是赞赏的。
  因此不得不在这里插入一句,因为它值得重复:PHP是个业余爱好者的社区。极少数人设计,为它工作,或极少有人知道他们在做什么。(哦,亲爱的读者,你当然是个极品例外!)那些成长了,想转投其它平台的人,使整个社区的平均水平下降。这个,就是这里,是PHP的最大问题:绝对的盲目领导盲目。
  好了,回来面对现实吧。
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17696-1.html
网站维护教程更新时间:2012-09-21 05:38:05  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer