우선 위의 세 가지 키워드를 이해해 봅시다. this, self, parent는 말 그대로 이해하기 쉬우며 this, self, father, haha를 의미합니다. 더 재미있습니다. 먼저 몇 가지 개념을 정립해 보겠습니다. 이 세 가지 핵심은 단어는 어디에 사용됩니까? 이것이 현재 개체에 대한 포인터(C에서는 포인터를 사용하여 살펴보겠습니다), self는 현재 클래스에 대한 포인터, parent는 부모 클래스에 대한 포인터라는 것을 간략하게 설명하겠습니다. 여기서는 더 나은 표현이 없기 때문에 포인터를 자주 사용합니다. 하하, 저는 중국어를 잘 배우지 못했습니다. -_-#
이렇게 말하기엔 명확하지 않으니, 실제 사례를 바탕으로 이야기해보겠습니다.
(1) this
코드는 다음과 같습니다.
<?php class UserName { //定义属性 private $name; //定义 构造函数 function construct( $name ) { $this->name = $name; //这里已经使用了this指针 } // 析构函数 function destruct(){} //打印用户名成员函数 function printName() { print( $this->name ); //又使用了this指针 } } //实例化对象 $nameObject = new UserName( "heiyeluren" ); //执行打印 $nameObject->printName(); //输出: heiyeluren //第二次实例化对象 $nameObject = new UserName( "PHP" ); //执行打印 $nameObject->printName(); //输出:PHP ?>
위 클래스가 행과 행에서 각각 이 포인터를 사용하는 것을 볼 수 있는데, 이때 이 포인터는 누구를 가리키는 것일까요? 실제로 이는 인스턴스화할 때 가리키는 대상을 결정합니다. 예를 들어 객체가 처음으로 인스턴스화되면(라인) $nameObject 객체를 가리킵니다. 그런 다음 라인을 인쇄할 때 print( $ this->
(2)self
우선 self는 클래스 자체를 가리킨다는 점을 분명히 해야 합니다. 즉, self는 인스턴스화된 개체를 가리키지 않습니다. 일반적으로 self는 클래스의 정적 변수를 가리키는 데 사용됩니다.
코드는 다음과 같습니다.
<?php class Counter { //定义属性,包括一个静态变量 private static $firstCount = ; private $lastCount; //构造函数 function construct() { $this->lastCount = ++selft::$firstCount; //使用self来调用静态变量,使用self调用必须使用::(域 运算符 号) } //打印最次数值 function printLastCount() { print( $this->lastCount ); } } //实例化对象 $countObject = new Counter(); $countObject->printLastCount(); //输出 ?>
여기서는 첫 번째 줄과 두 번째 줄 두 곳만 주의하면 됩니다. 두 번째 줄에 정적 변수 $firstCount를 정의했고, 초기 값은 다음과 같습니다. 이 값은 줄에서 호출되고, self를 사용하여 호출하고, "::"을 사용하여 중간에 연결합니다. 이것이 바로 우리가 호출하는 것입니다. 도메인 연산자인 경우 이때 호출하는 것은 클래스 자체에서 정의한 정적 변수 $frestCount입니다. 우리의 정적 변수는 다음 객체의 인스턴스와 아무 관련이 없으며 클래스에만 관련됩니다. self는 클래스 자체를 가리키고 객체 인스턴스와 아무 관련이 없기 때문에 self를 사용하여 참조할 수 있습니다. 즉, 클래스에 정적 멤버가 있는 경우 self를 사용하여 해당 멤버를 호출해야 합니다.
(3)parent
부모는 부모 클래스에 대한 포인터라는 것을 알고 있습니다. 일반적으로 부모 클래스의 생성자를 호출하는 데 사용됩니다.
코드는 다음과 같습니다.
<?php //基类 class Animal { //基类的属性 public $name; //名字 //基类的构造函数 public function construct( $name ) { $this->name = $name; } } //派生类 class Person extends Animal //Person类继承了Animal类 { public $personSex; //性别 public $personAge; //年龄 //继承类的构造函数 function construct( $personSex, $personAge ) { parent::construct( "heiyeluren" ); //使用parent调用了父类的构造函数 $this->personSex = $personSex; $this->personAge = $personAge; } function printPerson() { print( $this->name. " is " .$this->personSex. ",this year " .$this->personAge ); } } //实例化Person对象 $personObject = new Person( "male", ""); //执行打印 $personObject->printPerson(); //输出:heiyeluren is male,this year ?>
우리는 다음 몇 가지 세부 사항에 주의합니다. 멤버 속성은 모두 공개되며, 특히 상위 클래스의 속성은 상속된 클래스가 이를 통해 액세스할 수 있습니다. 요점은 다음과 같습니다. parent::construct( "heiyeluren" ) 이때 부모 클래스의 멤버는 모두 부모 클래스를 초기화하기 위해 부모 클래스의 생성자를 호출합니다. public이므로 이를 직접 사용하여 상속된 클래스를 호출할 수 있습니다.
요약:
이것은 객체 인스턴스에 대한 포인터이고, self는 클래스 자체에 대한 참조이며, parent는 상위 클래스에 대한 참조입니다.
위 내용은 PHP에서 this, self, parent라는 세 가지 키워드의 인스턴스 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!