php中static const define变量的区别
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-08 11:23:08 浏览: 评论:0
在php中static const define三个变量都是可以叫做静态表情了,意思是定义好的就不能再变了,但是他们三个是针对不同的域名,下面我来给各位介绍一下它们三个的区别吧.
const
用来定义那些在运行时不能被改变的常数值,一旦定义且不能改变其值,假如在程序中改变了它的值,那么会出现错误,代码如下:
- <?php
- calss Math{
- const pi=3.14159;
- }
- echo Math::pi;
- ?>
前面没有美元符号($),可以在不需要初始化该类的情况下实用,常量值必须是一个常量表达式,const定义的变量,在子类中可以被覆盖.
在类的内部定义,php5.3以后也可以在类的外部定义,const不可以用表达式.
define()
可以用 define() 函数来定义常量,一个常量一旦被定义,就不能再改变或者取消定义.
常量只能包含标量数据(boolean,integer,float 和 string).
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号.
define定义全局常量,在任何地方都可以访问.
define不能在类中定义而const可以.
define可以采用任何表达式,如define('BIT_5',1 << 5);
代码如下:
- <?php
- define("CONSTANT", "Hello world.");
- echo CONSTANT; // outputs "Hello world."
- echo Constant; // outputs "Constant" and issues a notice.
- ?>//开源软件:phpfensi.com
define()与const()两者之间的区别:
内存空间的分配上,define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
define定义全局常量,在任何地方都可以访问.
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行
static
php中的变量作用范围的另一个重要特性就是静态变量(static 变量).
静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果.
static关键字在类中,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例.
static的成员,必须使用self来访问,代码如下:
- class Counter
- {
- public static $count = 0;//定义一个静态属性
- //定义一个静态的方法
- static function getCount()
- { //开源软件:phpfensi.com
- return self::$count;
- }
- }
- echo Counter::getCount();
- Counter::count;
最后补充一个例子:
- <?php
- echo HAHA;
- class test {
- public $name2 = 'name2';
- static $name = 'name';
- const CHARSET = "中国";
- public function say_hello() {
- echo self :: CHARSET;
- }
- public static function set_name() {
- echo self :: $name;
- }
- public static function set_name2() {
- self::set_name();
- }
- public static function set_name3() {
- echo $this->name;
- $this->set_name();
- }
- }
- $const1 = new test();
- // 1
- $const1->say_hello();
- // 2
- echo "<br />";
- echo test :: CHARSET;
- // 3
- echo "<br />";
- echo $const1->name;
- // 4
- echo "<br />";
- echo $const1->set_name();
- // 5
- echo "<br />";
- echo $const1->set_name2();
- // 6
- echo "<br />";
- echo test::CHARSET;
- // 7
- echo "<br />";
- echo $const1->CHARSET;
- ?>
Tags: static const define
- 上一篇:php程序页面空白问题排查方法详解
- 下一篇:php中单引号与双引号定义字符串的不同
相关文章
- ·php中static关键字对变量和函数影响(2014-02-21)
- ·php中final static $this关键字学习笔记(2014-03-07)
- ·PHP中::、->、self、$this操作符(2014-03-10)
- ·php中global static和$GLOBALS使用与区别(2014-03-13)
- ·php中global和static两个关键字详解(2014-07-30)
- ·PHP中new static()与new self()的区别异同分析(2021-04-08)
- ·PHP中new static() 和 new self() 的区别介绍(2021-05-08)
- ·php之static静态属性与静态方法实例分析(2021-06-15)
- ·PHP中的静态变量及static静态变量使用详解(2021-06-25)
- ·php Notice : Use of undefined constant解决办法(2013-11-30)
- ·php const常量修饰符使用方法(2014-02-20)
- ·php类和对象之protected与const属性(2014-03-06)
- ·PHP单例模式学习笔记(2014-03-15)
- ·PHP使用动态Constant与Define值(2014-07-10)
- ·php提示Notice: Use of undefined constant错误(2014-09-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)