PHP常量能不用就不用
分类:PHP
来源:网络
时间:2010-09-03 11:24:01
PHP常量有自身的特点,在实际中能少用就少用。
1、PHP常量是定义后就不能修改和再次赋值。但是如果再次赋值会怎么样?
<?php
define(¹a¹, 12345);
define(¹a¹, 12349999999);
define(¹a¹, 12345);
define(¹a¹, 12349999999);
?>
这段代码只会报个notice错误。
带来的后果是:在你定义之前,其它人要是定义了同名的常量,你可能真的不知道里面究竟是什么值。
补救方法:
使用定义常量之前要使用definde()来确认一下常量是否已经定义过。
实际上,这是PHP处理错误过于宽泛,如果程序报Fatal并停止程序执行就可以避免这个问题。
2、如果判断PHP常量是否被定义?
<?php
define(¹a¹, 12345);
// 错误方法1,经常犯
if (isset(a)){……}
// 错误方法2,经常犯
if (defined(a)){……}
// 正确方法,不知道几个人能写对
if (defined(¹a¹)){……}
?>
3、使用不方便,容易混淆,效率低
<?php
// 再未定义前,直接作为字母使用
echo "这是常量a".a;// 显示:这是常量aa
define(¹a¹, 12345);
// 不能放在""内来使用,只能放在""外
echo "这是常量a".a;// 显示:这是常量a12345
?>
因为php处理常量的时候要进行多次查找,所以效率低。
4、一个经典的错误,数组中key为常量的问题
<?php
$t = array(¹a¹=>¹a¹,¹b¹=>¹b¹,¹c¹=>¹c¹);
// 得到key为a的值
echo $t[¹a¹];
// 错误!虽然,也可以得到key为a的值,是因为php找不到常量a所以将a做为字符串返回,导致大家将错就错的使用。
echo $t[a];
define(¹a¹, ¹c¹);
// 正确,注意:得到key为c的值
echo $t[a];
?>
PHP常量的问题,在于PHP处理常量的方法过于宽松导致的,如果能够严格一些,就会避免很多的问题。在实际过程,能用变量就不要用常量,因为变量的效率高使用更加方便。
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)