>  기사  >  백엔드 개발  >  PHP에서 이것과 self의 차이점은 무엇입니까?

PHP에서 이것과 self의 차이점은 무엇입니까?

王林
王林원래의
2020-07-15 16:12:096530검색

this와 PHP의 self의 차이점은 self가 클래스를 호출하는 반면 $this는 인스턴스화된 객체를 호출한다는 것입니다. self는 이 클래스의 정적 속성과 정적 메서드는 물론 const로 정의된 상수에 액세스할 수 있으며, 이는 이 클래스의 메서드와 속성을 호출할 수 있습니다.

PHP에서 이것과 self의 차이점은 무엇입니까?

차이:

self가 클래스를 호출하는 반면 $this는 인스턴스화된 객체를 호출합니다.

(추천 튜토리얼: php 튜토리얼)

아래에서 자세히 설명하겠습니다.

1 Self는 이 클래스의 정적 속성과 정적 메서드에 액세스할 수 있고 상위 클래스의 정적 속성과 정적 메서드에 액세스할 수 있습니다. self를 사용할 때는 인스턴스화할 필요가 없습니다.

코드 예:

      class self_test {
    
          static $instance;
 
          public function __construct(){
              self::$instance = 'instance';//静态属性只能通过self来访问
          }
    
          public function tank(){
              return self::$instance;//访问静态属性
          }
      }
 
      $str = new self_test();
      echo $str->tank();

결과 출력:

instance

2. self는 const

코드 예:

    class self_test {
    
        const  NAME = 'tancy';
 
        public function tank(){
            return self::NAME;
        }
    }
 
    $str = new self_test();
    echo $str->tank();

3에 의해 정의된 상수에 액세스할 수 있습니다. 정적 속성과 const 상수의 경우 기본적으로 이를 사용하여 호출 가능한 모든 메서드와 속성을 호출할 수 있습니다.

코드 예:

    class self_test {
        public $public;
    
        private $private;
    
        protected $protected;
 
        public function __construct(){
            $this->public = 'public';
            $this->private = 'private';
            $this->protected = 'protected';
        }
    
        public function tank(){
            return $this->public;
        }
    
        public function dell(){
            return $this->private;
        }
    
        public function datesrt(){
            return $this->protected;
        }
    }
 
    $str = new self_test();
    echo $str->tank();
    echo "</br>";
    echo $str->dell();
    echo "</br>";
    echo $str->datesrt();

결과:

public
private
protected

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

위 내용은 PHP에서 이것과 self의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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