汇总php编程注意事项

汇总php编程注意事项

ID:17486055

大小:86.50 KB

页数:20页

时间:2018-09-02

汇总php编程注意事项_第1页
汇总php编程注意事项_第2页
汇总php编程注意事项_第3页
汇总php编程注意事项_第4页
汇总php编程注意事项_第5页
资源描述:

《汇总php编程注意事项》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇总PHP编程注意事项1、php隐性的三元操作符(?:)优先级问题:例1:$person=$whoor$person="laruence";//实际上是等同于:$person=empty($who)?"laruence":$who;例2:$arr=array(1=>1,3=>3);$i=2;$a='test'.isset($arr[$i])?$arr[$i]:$i;$a是什么?这个问题,咋一看觉得简单,$a='test2';其实仔细推敲后运行的,结果是notice:Undefinedindex2...由

2、于优先级的问题,连接符的优先级比三元操作符高。首先是判断'test'.isset($arr[$i])这个字符串永远是true,因此:$a=$arr[$i];以致php提示提醒。2.PHP函数名和类名不区分大小写的,而变量名是区分大小写的。所以自己写的php模块,往往是大写的问题,编译不通过。3.序列化传递问题把复杂的数据类型压缩到一个字符串中serialize()把变量和它们的值编码成文本形式,unserialize()恢复原先变量$stooges=array('Moe','Larry','Curly'

3、);$new=serialize($stooges);echo'

';print_r($new);echo"
";print_r(unserialize($new));echo'
';序列化结果:a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}反序列化结果:Array([0]=>Moe[1]=>Larry[2]=>Curly)当把这些序列化的数据放在URL中在页面之间会传递时,需要对这些数据调用urlencode(),以确

4、保在其中的URL元字符进行处理:$shopping=array('Poppyseedbagel'=>2,'PlainBagel'=>1,'Lox'=>4,);echo'next';margic_quotes_gpc和magic_quotes_runtime配置项的设置会影响传递到unserialize()中的数据。如果magic_quotes_gpc项是启用的,那么在URL、PO

5、ST变量以及cookies中传递的数据在反序列化之前必须用stripslashes()进行处理:$new_cart=unserialize(stripslashes($cart));//如果magic_quotes_gpc开启$new_cart=unserialize($cart);如果magic_quotes_runtime是启用的,那么在向文件中写入序列化的数据之前必须用addslashes()进行处理,而在读取它们之前则必须用stripslashes()进行处理:$fp=fopen('/tmp/c

6、art','w');fputs($fp,addslashes(serialize($a)));fclose($fp);//如果magic_quotes_runtime开启$new_cat=unserialize(stripslashes(file_get_contents('/tmp/cart')));//如果magic_quotes_runtime关闭$new_cat=unserialize(file_get_contents('/tmp/cart'));在启用了magic_quotes_runtim

7、e的情况下,从数据库中读取序列化的数据也必须经过stripslashes()的处理,保存到数据库中的序列化数据必须要经过addslashes()的处理,以便能够适当地存储。mysql_query("insertintocart(id,data)values(1,'".addslashes(serialize($cart))."')");$rs=mysql_query('selectdatafromcartwhereid=1');$ob=mysql_fetch_object($rs);//如果magic_

8、quotes_runtime开启$new_cart=unserialize(stripslashes($ob->data));//如果magic_quotes_runtime关闭$new_cart=unserialize($ob->data);当对一个对象进行反序列化操作时,PHP会自动地调用其__wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。4.引用注意事项PHP中引用意味着用不同的名字

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。