이 글에서는 PHP에서 const와 static의 차이점과 사용법을 소개합니다. 필요하신 분들은 참고하시면 됩니다
먼저 const에 대해서는 PHP 클래스 내에서는 메소드가 아닌 멤버 속성만 수정할 수 있습니다. 다음 :
[php]view plaincopy
class Test{ const PATH = 'c/';//修饰常量 const function test(){//这种方法是错误的,const无法修饰方法 } }
const를 사용할 때 권한 수정 필드를 추가할 필요는 없지만 const 수정 상수를 호출할 때 기술이 필요합니다. 객체에 속하지 않고 전체 클래스이므로 호출할 때 클래스 이름과 도메인 이름 수정자를 사용해야 합니다. 예:
[php]view plaincopy
echo Test::PATH; //也可以使用下面的方法调用 $test = new Test(); echo $test::PATH;
그러나 내부에서 호출할 때는 class, it will 문제가 발생합니다. 현재 클래스 이름이나 클래스 내부의 현재 객체 이름을 얻는 방법(PHP는 객체를 기반으로 클래스 이름을 얻을 수 있음 - 리플렉션), PHP는 다음과 같은 두 가지 특수 키워드를 제공합니다.
[php] view plain copy
class Test{ const PATH = 'c/';//修饰常量 public function ass(){ echo $this::PATH.'<br />'; echo self::PATH.'<br />'; } }
여기서 self($ 제외)는 현재 클래스 이름을 나타내고 $this는 현재 객체를 나타냅니다. 이러한 방식으로 클래스 내에서 const 수정 상수를 호출할 수 있습니다.
다음으로 static에 대해 이야기해 보겠습니다.
const는 매우 유용하지만 일단 정의되면 값을 수정할 수 없지만 때로는 클래스에 속하는 속성이 필요하지만 해당 값을 수정할 수 있습니다. as 통계 이 클래스는 여러 객체를 생성합니다. static이 클래스의 멤버 변수를 수정할 때 사용법은 기본적으로 const와 동일합니다. 차이점은 static으로 수정된 속성이 권한을 추가할 수 있다는 것입니다. 추가도 가능하지만 이전 것은 불가능), static으로 수정한 멤버변수의 값도 수정이 가능하다.
하지만 static이 멤버 메소드를 수정하면 사용 방법이 약간 변경됩니다. 클래스 내부, static으로 수정된 메소드 본문 내부에서는 현재 클래스의 일반적인 멤버 변수에 액세스할 수 없습니다. 키워드 $this에는 현재 클래스의 정적 멤버 변수와 클래스 상수만 사용할 수 있습니다.
[php]view plaincopy
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으로 수정되는 변수와 다르며, 클래스 이름이나 객체 이름을 통해 호출할 수 있습니다. as :
[php]view plaincopy
echo '周长:'. Test::lenth(1).'<br/>'; echo '面积:'.Test::area(1).'<br/>'; $per = new Test(); echo $per->lenth(3);
위의 두 가지 호출 방법 모두 합법적입니다.
관련 권장 사항:
위 내용은 PHP에서 const와 static의 차이점과 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!