Logo

PHP经典实例(第2版)

PHP经典实例(第二版)

ISBN:9787508386089

作者:(美)斯克拉 / (美)切贝特伯格

译者:李松峰 / 秦绪文 / 李丽

出版社:中国电力出版社

出版时间:2009-10

评价:☆☆☆

这本书适合PHP入门后进阶学习使用,例子很多,拿来练手还行。 6.2 为函数的参数设定默认值

function wrap_html_tag($srting, $tag = 'b'){
     return "<$tag>$string</$tag>";
}

在指定默认值时有两件事值得特别关注。

第一,所有指定了默认值的参数必须出现在未指定默认值参数后面。否则,PHP无法判定省略的哪个参数应该取得默认值,以及哪个变量需要覆盖默认值。所以,wrap_html_tag()不能定义成:

function wrap_html_tag($tag = 'b', $srting){}

如果采取以上形式定义并给函数wrap_html_tag()只传递一个参数,PHP会将这个值指定给$tag,并发出缺少第二个参数的警告。

第二,指定的值必须是常量,例如字符串或者数字,而不能是变量。同样地,以函数wrap_html_tag()为例,不能像下面这样定义:

$my_html_tag = 'i';
function wrap_html_tag($srting, $tag = $my_html_tag){}

6.9 返回失败信息

在PHP中,非true值并不是标准的,而且容易造成错误。因此,函数应该返回定义的false关键字,因为当检测逻辑值时它是最有效的。例如,strpos()返回子字符串在原始字符串第一次出现的位置。因此,如果要查找一个子字符串的位置,你可以会这样写:

if(strpos($string, $substring)){/* 找到了 */}

然而,如果是在开始的位置就找到,那么函数的返回值是0.在if语句中0会被转换成false,所以该条件语句不会执行。所以我们应该这样来处理:

if(false !== strpos($string, $substring)){/* 找到了 */}

8.3 删除一个cookie

setcookie('flavor', '', 1);

在你的服务器和用户的计算机时钟不同步的情况下,最好设置一个很久之前的时间,所以我们在这里的时间戳取值为1。如果这个cookie之前设置过路径、域名或者安全标记,我们在删除它的时候也需要带上。

comments powered by Disqus