>백엔드 개발 >PHP 문제 >PHP const와 정적 변수의 차이점은 무엇입니까

PHP const와 정적 변수의 차이점은 무엇입니까

青灯夜游
青灯夜游원래의
2021-03-31 18:15:562606검색

차이점: const는 한번 정의되면 변경할 수 없지만 static으로 수정된 변수는 변경할 수 있습니다. const는 클래스 속성만 수정할 수 있고 클래스 메서드는 수정할 수 없습니다. static은 속성과 메서드를 수정할 수 있습니다.

PHP const와 정적 변수의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP의 정적 변수와 const 변수의 차이점

정적 변수

1. static 정적 변수는 수정할 수 있지만 const 변수는 수정할 수 없습니다.
2. 정적 정적 변수는 권한을 수정할 수 있습니다.
3. 클래스 내부에서는 satic 수정 메서드가 있습니다. 본문에서는 액세스할 수 없습니다. 클래스의 staic 변수와 const 상수만 액세스할 수 있습니다.

class staticTest1 {
    var $var1 = "hello";
    public static $var2 = "hellostatic"; //public, protected, private
    const var3 = "helloconst";
    public static function displayDifferent(){
###        echo $this->$var1."<br>";//不能访问普通变量
        echo staticTest1::$var2."<br>";//可以访问类的静态变量
        echo self::var3."<br>";//不能用$this::var3, self::var3代表当前类,$this::var3代表当前对象
    }
}

//메소드는 두 가지 방법으로 호출할 수 있습니다.

//第一种,通过对象调用
$test1 = new staticTest1();
echo $test1->displayDifferent();
echo "<br>";
//第二种,通过类调用
echo staticTest1::displayDifferent();
echo "<br>";

그런데 객체의 경우 "::"만 가능합니다. 정적 변수와 메서드에 액세스할 수 있으며 self는 "::"만 사용하여 현재 클래스의 멤버를 호출할 수 있습니다

const 변수

1. Const 변수는 메서드가 아닌 멤버 변수만 수정할 수 있습니다
2. 필요 없습니다. 수정 권한을 추가하려면
3. const 변수는 전체 클래스에 속하고 객체에 속하지 않기 때문에 객체를 통해 접근할 수 없습니다. 예를 들어 $this->constvariable은

class constTest1 {
    var $var1 = "welcome";
//    public const pi = 3.14;//不能加修饰权限
    const pi = 3.14;
//    const function displayDifferent() {//function前不能加const
//        
//    }
   function displayDifferent() {
        echo self::pi."<br>";
//        echo $this::pi."<br>"; 
    }
    static function displayDifferent2() {
        echo self::pi."<br>";
//        echo $this::pi."<br>"; //这句话不行。
    }
}

2개를 허용하지 않습니다. 방법 전화

//第一种,通过对象调用
$test2 = new constTest1();
echo $test2->displayDifferent();
//第二种,通过类调用
//echo constTest1::displayDifferent();//对象名用"::"只能访问静态变量和方法,所以这个不行

echo constTest1::displayDifferent2();

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP const와 정적 변수의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.