>백엔드 개발 >PHP 문제 >PHP에서 static, self, $this의 차이점은 무엇입니까?

PHP에서 static, self, $this의 차이점은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-01 15:15:114007검색

PHP에서 static, self, $this의 차이점은 다음과 같습니다. 1. [$this]는 클래스의 비정적 메서드로 작성된 개체에 대한 참조를 나타냅니다. 2. Self는 this와 다릅니다. 3. static은 일반적으로 클래스의 정적 변수 및 정적 메서드에 액세스하는 데 사용됩니다.

PHP에서 static, self, $this의 차이점은 무엇입니까?

PHP에서 static, self 및 $this의 차이점은 다음과 같습니다.

1 $this는 $this가 아닌 개체에 대한 참조를 나타냅니다. 클래스의 정적 메서드, 클래스 인스턴스화, 메서드를 호출하는 사람(일반적으로 개체 호출) $this는 개체에 대한 참조를 나타냅니다. $this 表示对象的引用  $this写在类中的非静态方法中, 实例化该类,谁调用该方法(一般是对象调用)$this则表示该对象的引用。

<?php
class Person {
    public $name;
    public function getName() {
        echo $this->name;
    }
}
$p = new Person();
$p2 = new Person();
$p->name = "小红";
$p2->name = "小明";
$p->getName();  // 小红
$p2->getName();  // 小明

 

 

 

2、self 和 this 不同,它指向类本身,不指向任何实例化对象,一般用来访问类中的静态变量和静态方法,也是写在类中的方法。self写在哪个类中则表示该类的引用

 

 

<?php
class Person {
    public static $name = "小红";
    public static function getName() {
        echo self::$name;
    }
}
$p = new Person();
$p2 = new Person();
$p::getName();  // 小红
$p2::getName();  // 小红
$p::$name = "小明";
$p::getName();  // 小明
$p2::getName();  // 小明

 

 

3、static

<?php
class A {
    public function say() {
        echo "Hello";
    }
    public function saySelf() {
       //static 和 self 可以调用非静态方法  不能调用非静态属性  静态方法中不能有$this
      // static 和 self 可以写在非静态的方法中 ,可以使用对象调用
        self::say();
    }
    public function sayStatic() {
        static::say();
    }
}
class B extends A {
    public function say() {
        echo "World";
    }
}
$b = new B();
$b->say();  // World
$b->saySelf();  // Hello
$b->sayStatic();  // World

2. self 는 클래스 자체를 가리키며 일반적으로 정적 변수 및 정적 메서드에 액세스하는 데 사용됩니다. 수업 중에도 작성 방법이 있습니다. 어떤 클래스 자체가 작성되었는지는 클래스🎜🎜🎜🎜🎜rrreee🎜🎜🎜🎜🎜3의 참조를 나타냅니다. static은 일반적으로 클래스의 정적 변수 및 정적 메서드에 액세스하는 데 사용됩니다. 클래스에 작성된 메서드는 메서드를 호출하는 클래스이기도 합니다. static은 클래스(클래스가 바인딩되어 있음)를 의미합니다.

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

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