搜索
首页php教程php手册php中static const define变量的区别

在php中static const define三个变量都是可以叫做静态表情了,意思是定义好的就不能再变了,但是他们三个是针对不同的域名,下面我来给各位介绍一下它们三个的区别吧.

const

用来定义那些在运行时不能被改变的常数值,一旦定义且不能改变其值,假如在程序中改变了它的值,那么会出现错误,代码如下:

<?php  
class 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

代码如下:

<?php 
    define("CONSTANT", "Hello world."); 
    echo CONSTANT; // outputs "Hello world." 
    echo Constant; // outputs "Constant" and issues a notice. 
?>

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() 
    {  
        return self::$count; 
    } 
} 
echo Counter::getCount(); 
Counter::count;

最后补充一个例子:

<?php 
echo HAHA; 
class test {
    public $name2 = &#39;name2&#39;; 
    static $name = &#39;name&#39;; 
    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;


永久链接:

转载随意!带上文章地址吧。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版