이 글에서는 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.'<br />'; echo self::PATH.'<br />'; } }
where self ($ 제외)는 현재 클래스 이름을 나타내고 $this는 현재 객체를 나타냅니다. 이러한 방식으로 클래스 내에서 const 수정 상수를 호출할 수 있습니다.
다음으로 static
const에 대해 이야기해 보겠습니다. 매우 유용하지만 일단 정의되면 값을 수정할 수 없습니다. 하지만 때로는 클래스에 속하는 속성이 필요하지만 그 값을 계산하는 등의 작업이 가능합니다. static이 클래스의 멤버 변수를 수정할 때 사용 방법은 기본적으로 const와 동일합니다. 차이점은 static으로 수정된 속성이 권한을 추가할 수도 있다는 것입니다. 7.1 PHP 추가에서는 사용이 가능했으나 이전 버전에서는 불가능), 정적으로 수정된 멤버 변수의 값을 수정할 수 있다.
하지만 멤버 메서드를 정적으로 수정하면 사용 방법이 약간 변경됩니다. 클래스 내부, 정적으로 수정된 메서드 본문 내에서는 현재 클래스의 일반 멤버 변수에 접근할 수 없습니다. 정확히 말하면 $this 키워드는 액세스할 수 없습니다. , 현재 클래스의 정적 멤버 변수와 클래스 상수만 사용할 수 있습니다.
class Test{ static public $name='asd'; 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 '周长:'. Test::lenth(1).'<br/>'; echo '面积:'.Test::area(1).'<br/>'; $per = new Test(); echo $per->lenth(3);
위의 두 가지 호출 메소드는 합법적입니다.
이 글에서는 PHP에서 const와 static의 차이점과 사용법을 설명합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.
관련 그림:
PHP는 어떻게 __autoload 및 apl_autoload_register 두 함수를 자동으로 로드합니까?
위 내용은 PHP에서 const와 static의 차이점과 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!