{一}PHP에서 this, self, parent의 차이점 중 하나인 이 문서
객체 지향 프로그래밍(OOP, Object Oriented 프로그래밍)은 이제 프로그래머의 기본 기술이 되었습니다. PHP의 고급 프로그래밍에 OOP 아이디어를 사용하는 것은 PHP 프로그래밍 기능을 향상하고 웹 개발 아키텍처를 계획하는 데 매우 의미가 있습니다. 다시 작성된 후 PHP5는 OOP 지원에서 큰 도약을 이루었으며 객체 지향 언어의 기능을 대부분 갖춘 언어가 되었습니다. PHP4보다 객체 지향 기능이 더 많습니다. 여기서 제가 주로 이야기하고 있는 것은 this, self, parent 세 키워드의 차이입니다. 문자 그대로 이해하면 그들은 각각 나를, 아버지를 지칭합니다. 먼저 예비적인 설명을 하자면, 이것은 현재 객체에 대한 포인터(C에서는 포인터로 간주될 수 있음)이고, self는 현재 클래스에 대한 포인터이고, parent는 부모 클래스에 대한 포인터입니다. 이를 표현할 수 있는 더 좋은 언어가 없기 때문에 여기서 설명하기 위해 포인터를 자주 사용합니다. 포인터의 개념에 관해서는 백과사전을 참조할 수 있습니다.
실제 사례를 바탕으로 이야기해 보겠습니다.
<?php classname //建立了一个名为name的类 { private$name; //定义属性,私有 //定义 构造函数 ,用于初始化赋值 function construct( $name ) { $this->name =$name; //这里已经使用了this指针语句① } // 析构函数 function destruct(){} //打印用户名成员函数 function printname() { print( $this->name); //再次使用了this指针语句②,也可以使用echo输出 } } $obj1 = new name("PBPHome"); //实例化对象 语句③ //执行打印 $obj1->printname(); //输出:PBPHome echo"<br>"; //输出:回车 //第二次实例化对象 $obj2 = new name( "PHP" ); //执行打印 $obj2->printname(); //输出:PHP ?>
설명: 위 클래스는 문장 ①과 문장 ②에서 각각 이 포인터를 사용하는데, 이때 이 포인터는 누구를 가리키는 것일까요? 실제로 이는 인스턴스화될 때 개체가 누구를 가리키는지 결정합니다. 예를 들어 개체가 처음으로 인스턴스화되면(문 ③) $obj1 개체를 가리키는 것입니다. 그런 다음 문 ②의 인쇄를 실행할 때, print( $this- >
{2} PHP Part 2에서 self와 parent의 차이점 self
우선 self가 클래스 자체를 가리킨다는 점을 분명히 해야 합니다. , self는 이미 인스턴스화된 객체를 가리키지 않으며 일반적으로 self는 클래스의 정적 변수를 가리키는 데 사용됩니다. 클래스에서 정적 멤버를 사용하는 경우(일반적으로 static 키워드 사용) self를 사용하여 호출해야 합니다. 또한 self를 사용하여 정적 변수를 호출하려면 ::(필드
연산자 번호)을 사용해야 합니다. 예를 참조하세요.
<?php classcounter //定义一个counter的类 { //定义属性,包括一个静态变量$firstCount,并赋初值0 语句① private static $firstCount = 0; private $lastCount; //构造函数 function construct() { $this->lastCount =++self::$firstCount; //使用self来调用静态变量 语句② } //打印lastCount数值 function printLastCount() { print( $this->lastCount ); } } //实例化对象 $obj = new Counter(); $obj->printLastCount(); //执行到这里的时候,程序输出1 ?>
예문을 통해 이해하기가 더 쉽습니다. 두 번째 장의 끝입니다.
{3} PHP Part 3 parent에서 self와 parent의 차이점
우선, parent는 상위 클래스에 대한 포인터임을 분명히 합니다. 일반적으로 parent를 사용하여 상위 클래스의 생성자를 호출합니다. 예시는 다음과 같습니다.
<?php //建立基类Animal class Animal { public $name; //基类的属性,名字$name //基类的构造函数,初始化赋值 public function construct( $name ) { $this->name = $name; } } //定义派生类Person 继承自Animal类 class Person extends Animal { public$personSex; //对于派生类,新定义了属性$personSex性别、$personAge年龄 public $personAge; //派生类的构造函数 function construct( $personSex, $personAge ) { parent::construct( "PBPHome"); //使用parent调用了父类的构造函数 语句① $this->personSex = $personSex; $this->personAge = $personAge; } //派生类的成员函数,用于打印,格式:名字 is name,age is 年龄 function printPerson() { print( $this->name. " is ".$this->personSex. ",age is ".$this->personAge ); } } //实例化Person对象 $personObject = new Person( "male", "21"); //执行打印 $personObject->printPerson();//输出结果:PBPHome is male,age is 21 ?>
요약: 이것은 인스턴스화할 때 결정되는 객체 인스턴스에 대한 포인터입니다. self는 클래스 자체에 대한 참조이며 일반적으로 클래스의 정적 변수를 가리키는 데 사용됩니다. parent는 일반적으로 parent로 사용되는 상위 클래스에 대한 참조입니다. 상위 클래스의 생성자를 호출합니다.
위 내용은 PHP에서 this, self 및 parent 키워드의 차이점과 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!