PHP에서 this, self, parent라는 세 가지 키워드의 인스턴스 사용법에 대한 자세한 설명
우선 위의 세 가지 키워드를 이해해 봅시다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
