>  기사  >  백엔드 개발  >  PHP에서 self와 this의 차이점과 사용법에 대한 자세한 소개

PHP에서 self와 this의 차이점과 사용법에 대한 자세한 소개

王林
王林원래의
2019-09-05 15:51:073928검색

PHP에서 self와 this의 차이점과 사용법에 대한 자세한 소개

PHP에서 this와 self 키워드의 차이점 :

1 self는 클래스를 나타냅니다. this 대표 객체
2. $this를 사용할 수 있는 경우 self를 사용해야 합니다. $this는 정적 메서드에서 사용할 수 없습니다. 클래스에 의해 액세스됩니다.

PHP에서 this 및 self 키워드 사용 :

self는 정적 클래스를 참조하는 클래스 이름이며, $this 비정적 클래스를 참조하는 인스턴스 이름입니다.

정적 속성 및 메서드, 정적 속성 및 메서드만 액세스할 수 있으며, 비정적 속성 및 메서드는 클래스에서 액세스할 수 없습니다.

정적 속성과 메서드가 생성될 때 호출할 수 있는 이 클래스의 인스턴스가 없을 수 있기 때문입니다.

정적 속성은 메모리에 복사본이 하나만 있으며 모든 인스턴스에서 공유됩니다.

현재 클래스의 정적 멤버에 액세스하려면

키워드를 사용하세요. self::

클래스의 모든 인스턴스는 클래스의 정적 속성을 공유합니다.

즉, 메모리에 인스턴스가 여러 개 있더라도 정적 속성의 복사본은 하나만 있습니다.

아래 예에서는 카운터 $count 속성이 비공개 및 정적 수정과 함께 설정되었습니다.

이런 방식으로 외부 세계에서는 $count 속성에 직접 접근할 수 없습니다. 프로그램 실행 결과, 여러 인스턴스가 동일한 정적 $count 속성을 사용하고 있음을 알 수 있습니다.

<?php    
class user  
{    
   private static $count = 0 ; //记录所有用户的登录情况.    
   public function __construct() {    
       self::$count = self::$count + 1;    
   }    
   public function getCount() {      
       return self::$count;    
   }    
   public function __destruct() {    
       self::$count = self::$count - 1;    
   }    
}    
$user1 = new user();    
$user2 = new user();    
$user3 = new user();    
echo "now here have " . $user1->getCount() . " user";    
echo "<br />";    
unset($user3);    
echo "now here have " . $user1->getCount() . " user";    
?>


정적 속성 직접 호출 가능

정적 속성 직접 호출 가능 인스턴스화를 사용하지 않고, 클래스가 생성되기 직전에 바로 사용할 수 있습니다.

사용된 방법은 다음과 같습니다: 클래스 이름::정적 속성 이름

<?php    
class Math  
{    
   public static $pi = 3.14;    
}    
// 求一个半径3的园的面积。    
$r = 3;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;    
echo "<br /><br />";    
//这里我觉得 3.14 不够精确,我把它设置的更精确。    
Math::$pi = 3.141592653589793;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;      
?>


클래스가 생성되지 않았으며 정적 속성을 직접 사용할 수 있습니다.

정적 메서드

정적 메서드는 클래스를 인스턴스화하지 않고도 직접 사용할 수 있습니다.

사용된 메서드는 클래스 이름::정적 메서드 이름입니다

더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 방문하세요:

PHP 비디오 튜토리얼

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

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