찾다
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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경