理解PHP5中static const char和const关键字的区别

1916人阅读
define部分:
宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段。(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议。)
宏的语法为:
#define 宏名称 宏值
作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母。
利用宏的优点:
1)让代码更简洁明了
当然,这有赖于你为宏取一个适当的名字。一般来说,宏的名字更要注重有明确直观的意义,有时宁可让它长点。
2)方便代码维护
对宏的处理,在编译过程中称为“预处理”。也就是说在正式编译前,编译器必须先将代码出现的宏,用其相应的宏值替换,这个过程有点你我在文字处理软件中的查找替换。所以在代码中使用宏表达常数,归根结底还是使用了立即数,并没有明确指定这个量的类型。
常量定义的格式为:
const 数据类型 常量名 = 常量值;
而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查。常量必须一开始就指定一个值,然后,在以后的代码中,我们不允许改变此常量的值。
两者之间的区别:
内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
define定义全局常量,在任何地方都可以访问
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行 PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想。我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助。(1) staticstatic关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护。类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。类的静态方法能访问类的静态的属性。另外说明的是,static的成员,必须使用self来访问,使用this会出错。(关于this和self的异同,请参考:&&)(2)constconst是一个定义常量的关键字,类似于C中的#define,能够定义一个常量,如果在程序中改变了它的值,那么会出现错误。举例说明上面的代码:(注:以下代码来自phpe.net)Php代码&&&?php&&&&class&Counter&&{&&&private&static&$count&=&0;&&&const&VERSION&=&2.0;&&&&&&&&function&__construct()&&&{&&&&self::$count++;&&&}&&&&&&&&&function&__destruct()&&&{&&&&self::$count--;&&&}&&&&&&&&&static&function&getCount()&&&{&&&&return&self::$count;&&&}&&}&&&&&&$c&=&new&Counter();&&&&&&print(&Counter::getCount().&&&br&\n&&);&&&&&&&print(&&Version&useed:&&&.Counter::VERSION.&&&br&\n&&);&&&&?& &
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:186339次
积分:2679
积分:2679
排名:第5759名
原创:72篇
转载:96篇
评论:18条
(1)(53)(28)(70)(11)(4)(1)“经验教程”中共找到约有5271条符合中国风和江南水墨壁纸的记录,耗时0.014秒
时间:不限排序:不限
-> -> -> 中国风和江南水墨壁纸
浏览:1510 | 下载: | 评论:0浏览:1507 | 下载: | 评论:0浏览:1512 | 下载: | 评论:0浏览:1542 | 下载: | 评论:0浏览:1731 | 下载: | 评论:0浏览:1511 | 下载: | 评论:0浏览:1529 | 下载: | 评论:0浏览:1520 | 下载: | 评论:0浏览:1665 | 下载: | 评论:0浏览:1548 | 下载: | 评论:0浏览:1507 | 下载: | 评论:0浏览:4561 | 下载: | 评论:0浏览:1547 | 下载: | 评论:0浏览:1526 | 下载: | 评论:0浏览:1505 | 下载: | 评论:0浏览:1878 | 下载: | 评论:0浏览:1530 | 下载: | 评论:0浏览:1546 | 下载: | 评论:0浏览:1513 | 下载: | 评论:0浏览:1526 | 下载: | 评论:0浏览:1566 | 下载: | 评论:0浏览:1512 | 下载: | 评论:0浏览:1680 | 下载: | 评论:0浏览:1524 | 下载: | 评论:0php中const与define的使用区别 详解
1、const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。
2、define不能在类中定义而const可以。
3、const不能在条件语句中定义常量
if (...) {&
&&& const FOO = 'BAR';&&& // invalid&
if (...) {&
&&& define('FOO', 'BAR'); // valid&
4、const采用一个普通的常量名称,define可以采用表达式作为名称。
const& FOO = 'BAR';&
for ($i = 0; $i & 32; ++$i) {&
&&& define('BIT_' . $i, 1 && $i);&
5、const只能接受静态的标量,而define可以采用任何表达式。
const BIT_5 = 1 && 5;&&& // invalid&
define('BIT_5', 1 && 5); // valid&
6、const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量
define('FOO', 'BAR', true);&
echo FOO; // BAR&
使用const简单易读,它本身是一个语言结构,而define是一个方法,用const定义在编译时比define快很多。
摘自 aa的专栏
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。理解PHP5中static和const关键字
理解PHP5中static和const关键字,阅读理解PHP5中static和const关键字,PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想。我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助。(1) staticstatic关键
   
PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想。我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助。
(1) staticstatic关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护。类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。类的静态方法能访问类的静态的属性。另外说明的是,static的成员,必须使用self来访问,使用this会出错。(关于this和self的异同,请参考:
(2)constconst是一个定义常量的关键字,类似于C中的#define,能够定义一个常量,如果在程序中改变了它的值,那么会出现错误。
举例说明上面的代码:(注:以下代码来自phpe.net)
class Counter{&private static $count = 0;//定义一个静态属性&const VERSION = 2.0;//定义一个常量
&//构造函数&function __construct()&{& self::$count++;&}&&//析构函数&function __destruct()&{& self::$count--;&}&&//定义一个静态的方法&static function getCount()&{& return self::$&}}
//创建一个实例$c = new Counter();
//执行打印print( Counter::getCount(). "&br&\n" ); //使用直接输入类名来访问静态方法Counter::getCount
//打印类的版本print( "Version useed: " .Counter::VERSION. "&br&\n" );
恩,基本到这里,心里知道的那点东西就讲清楚了,不过我觉得自己对static还有点不理解,请高手指点!
我的邮箱:
(责任编辑:)
本文关键字:
广告赞助商
最新视频推荐
Copyright (C) 2007-, All Rights Reserved 版权所有 . 沪ICP备号
地址:上海徐汇区零陵路585号 爱邦大厦26H座
传真(FAX):021-
电话(Tel):021-
PHP100 Website Powered by PHPCMS. For PHP100. 服务器维护:阿里巴巴-阿里云}

我要回帖

更多关于 const static 区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信