>  기사  >  백엔드 개발  >  PHP에서 const와 static의 차이점과 사용에 대한 자세한 설명

PHP에서 const와 static의 차이점과 사용에 대한 자세한 설명

jacklove
jacklove원래의
2018-05-22 14:33:461650검색

이 글에서는 PHP에서 const와 static의 차이점과 사용법을 설명합니다.

먼저 const에 관해서는 다음과 같이 PHP 클래스 내에서 멤버 속성만 수정할 수 있고 메소드는 수정할 수 없습니다.

class Test{ 
    const PATH = 'c/';//修饰常量 
    const function test(){//这种方法是错误的,const无法修饰方法 
    } 
}

const를 사용할 때 필드를 수정하기 위해 권한을 추가할 필요는 없지만 호출할 때 기술이 필요합니다. const-modified 상수. 상수는 객체가 아닌 전체 클래스에 속하므로 호출할 때 클래스 이름과 도메인 이름 수정자를 사용해야 합니다. 예:

echo Test::PATH; 
//也可以使用下面的方法调用 
$test = new Test(); 
echo  $test::PATH;

그러나 클래스 내부에서 호출하면 문제가 발생합니다. , 클래스에 추가하는 방법은 무엇입니까? 내부적으로 현재 클래스 이름 또는 현재 객체 이름을 얻습니다(PHP는 객체를 기반으로 클래스 이름을 얻을 수 있습니다 - 반사). PHP는 다음과 같은 두 가지 특수 키워드를 제공합니다.

class Test{ 
    const PATH = 'c/';//修饰常量 
    public function ass(){ 
        echo $this::PATH.&#39;<br />&#39;; 
        echo self::PATH.&#39;<br />&#39;; 
    } 
}

where self ($ 제외)는 현재 클래스 이름을 나타내고 $this는 현재 객체를 나타냅니다. 이러한 방식으로 클래스 내에서 const 수정 상수를 호출할 수 있습니다.

다음으로 static

const에 대해 이야기해 보겠습니다. 매우 유용하지만 일단 정의되면 값을 수정할 수 없습니다. 하지만 때로는 클래스에 속하는 속성이 필요하지만 그 값을 계산하는 등의 작업이 가능합니다. static이 클래스의 멤버 변수를 수정할 때 사용 방법은 기본적으로 const와 동일합니다. 차이점은 static으로 수정된 속성이 권한을 추가할 수도 있다는 것입니다. 7.1 PHP 추가에서는 사용이 가능했으나 이전 버전에서는 불가능), 정적으로 수정된 멤버 변수의 값을 수정할 수 있다.

하지만 멤버 메서드를 정적으로 수정하면 사용 방법이 약간 변경됩니다. 클래스 내부, 정적으로 수정된 메서드 본문 내에서는 현재 클래스의 일반 멤버 변수에 접근할 수 없습니다. 정확히 말하면 $this 키워드는 액세스할 수 없습니다. , 현재 클래스의 정적 멤버 변수와 클래스 상수만 사용할 수 있습니다.

class Test{ 
    static public $name=&#39;asd&#39;; 
    const π = 3.1415926; 
    public $age = 10; 
    public static function lenth($r){ 
        //echo $this->age;//会发生错误,不能访问普通的成员变量 
        echo Test::$name; 
        return $r*2*self::π;     
    } 
    public static function area($r){ 
        return $r*$r*self::π; 
    }    
}

static을 사용하는 과정에서 호출되는 메소드는 static으로 수정되는 변수와 다릅니다. 다음과 같이 클래스 이름이나 객체 이름을 통해 호출할 수 있습니다.

echo &#39;周长:&#39;. Test::lenth(1).&#39;<br/>&#39;; 
echo &#39;面积:&#39;.Test::area(1).&#39;<br/>&#39;; 
$per = new Test(); 
echo $per->lenth(3);

위의 두 가지 호출 메소드는 합법적입니다.

이 글에서는 PHP에서 const와 static의 차이점과 사용법을 설명합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 그림:

php 및 정규식 사용에 대한 자세한 설명

PHP는 어떻게 __autoload 및 apl_autoload_register 두 함수를 자동으로 로드합니까?

php 오류 처리 및 구현 방법

위 내용은 PHP에서 const와 static의 차이점과 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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