当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP 的八卦两则

PHP
一贴学会PHP 新手入门教程
用PHP的ob_start() 控制您的浏览器cache
谈谈新手如何学习PHP 默默经典版本
黑夜路人出的几道php笔试题
一些 PHP 管理系统程序中的后门
用php获取本周,上周,本月,上月,本季度日期的代码
PHP 简单数组排序实现代码
PHP 多维数组排序实现代码
php 全局变量范围分析
php_xmlhttp 乱码问题解决方法
PHP 数组学习排序全接触
php Sql Server连接失败问题及解决办法
PHP 翻页 实例代码
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
PHP 5.3.0 安装分析心得
php 生成WML页面方法详解
php 取得瑞年与平年的天数的代码
php empty函数 使用说明
php natsort内核函数浅析
PHP 源代码分析 Zend HashTable详解

PHP 的八卦两则


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 130 ::
收藏到网摘: n/a

PHP5.3 的正式发布,又重新关注起其语言本身。细心的朋友可能发现,PHP5.3 增加了 goto 语句,这在结构化语言今天似乎是有点不可思议的事情。

按照官方的说法,其实这和我们传统理解的 goto 还是有所差别。PHP 5.3 中的 goto 语句只能在脚本文件以及上下文中跳转,因此它无法从某函数或方法跳到其他的函数或者方法 -- 这不得不让我怀疑是否是“妥协”的结果。

看来 PHP 语言的设计者对 goto 语句应用是方便从从多重循环体中跳出(在其文档中的例子也说明了这点)。但其实这功能的本身也引发了不少的争议,个人也隐约的闻到了潘多拉身上的香水味。

其实“好事者”早在 2007 年就开始“期待”这项“新功能”,相信他现在会很开心。不过有趣的是这篇文章的留言给原作者泼了盆冷水。的确,goto 语句所能完成的功能,其实善用 switch 也能做到,而且更有可读性。

不过不管怎么样,语言本身仅仅是工具而已。从程序的本身角度考虑(不仅仅是 PHP),如果有过多的循环等的语块嵌套,那就说明这段代码必须需要优化了。到底应不应该使用 goto 语句,其实本人和其他的 PHP 人员也有过讨论。

最终,大家较为统一的观点就是,避免使用。

“PHP 的 10 宗罪”

老外较起真来真的非常让人受不了,这不又有好事者总结了 PHP 语言本身语法的 “10 宗罪”。其实,我个人这与其称为“Mistake”,还说是 PHP 提供的“美丽的陷阱”。

例如,文中提到的有关单引号和双引号的变量转义问题。其实这一争论的声音从学 PHP 起就在耳畔充斥。甚至记得当年还有道经典的面试题,就是考单引号和双引号的的速度孰快 -- 回过头来看,这论点就犹如此道面试题一样,是没有任何的意义的。

但这不代表文中的些“Mistake”都可以当作笑谈,有些是的确需要注意的。例如

以下为引用的内容:

$i = 0;
while($i < 20); {
    //some code here
    $i++;
}

这样的写法。对应的其实还有 for 语句,我们可能“手残”多写了个分号(不要不承认),那么就只能祈祷 set_time_limit 的数字小些了。

文中指出的其他些问题,也是我们需要纳入思考的范围中,例如数据库存取的缓存问题。为何 PHP 为何至今没有数据池这样的概念,其实这需要从 PHP 这门语言本身的设计哲学出发了。从此问题其实可以引申争为何 PHP 没有走向 Java 的套路,好吧这问题又可以争论一番了。

文中还有其他类似的条目,都非常的具有争议(也许搞不好这就是作者的初衷),但无论怎么说,其提出的几个问题都是值得我们去思考的。

深夜杂谈随想,乱语之处众位见笑了,欢迎发表您的看法。

原文地址:http://www.gracecode.com/archives/2968/