{一}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 ?>여기서 주목해야 할 부분은 문장 ①과 문장 ②입니다. 문장 ①에서 정적 변수 $firstCount를 정의한 후, 문장 ②에서 이 값을 호출하기 위해 self를 사용했습니다. 그러면 이때 호출하는 것은 클래스 자체에서 정의한 정적 변수 $frestCount입니다. 우리의 정적 변수는 다음 개체의 인스턴스와 아무 관련이 없으며 클래스에만 관련되어 있습니다. 그런 다음 클래스 자체를 호출하면 self가 클래스 자체를 가리키고 있으므로 이를 참조하는 데 사용할 수 없습니다. 객체 인스턴스와 아무 관련이 없습니다. 그런 다음 이전에 사용된 this는 인스턴스화된 객체 $obj를 호출하므로 혼동하지 마십시오.
예문을 통해 이해하기가 더 쉽습니다. 두 번째 장의 끝입니다.
{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 ?>이것의 사용법도 포함되어 있으니 직접 분석해 보시기 바랍니다. 우리는 이 세부 사항에 주의를 기울입니다. 멤버 속성은 모두 공개(공용 속성 및 메서드, 클래스 내부 및 외부 코드에 액세스 가능), 특히 상위 클래스의 속성이 이를 통해 액세스하기 위한 것입니다. 핵심은 문장 ①: parent::construct("heiyeluren")입니다. 이때 parent를 사용하여 부모 클래스의 생성자를 호출하여 부모 클래스를 초기화합니다. 이름은 PBPHome입니다. 다른 개체 $personObject1을 인스턴스화하여 테스트할 수 있습니다. 인쇄 후에도 이름은 여전히 PBPHome입니다.
요약: 이것은 인스턴스화할 때 결정되는 객체 인스턴스에 대한 포인터입니다. self는 클래스 자체에 대한 참조이며 일반적으로 클래스의 정적 변수를 가리키는 데 사용됩니다. parent는 일반적으로 parent로 사용되는 상위 클래스에 대한 참조입니다. 상위 클래스의 생성자를 호출합니다.
위 내용은 PHP에서 this, self 및 parent 키워드의 차이점과 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

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

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

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
