PHP 에서 new static()과 new self()의 비교
1)유자 류 집적 시 양자 의 표현 이 다르다
2)phop 5.2 및 이하 버 전 은 new static()의 문법 을 지원 하지 않 습 니 다.
쉽게 말 하면 self 는 어떤 종류 에 쓰 여 있 습 니까?실제 호출 된 것 은 바로 이 종류 입 니 다.이른바 후기 정적 바 인 딩,static 대표 가 사용 하 는 이 종 류 는 바로 당신 이 아버지 클래스 에 쓴 static 입 니 다.
그리고 하위 클래스 를 통 해 이 static 를 직접/간접 적 으로 사 용 했 습 니 다.이 static 은 바로 이 하위 클래스 를 말 합 니 다.그래서 static 는$this 와 비슷 하지만 static 는 정적 방법 과 속성 등에 사용 할 수 있 습 니 다.
구체 적 인 설명 은 다음 과 같다.
self-바로 이 종류 입 니 다.코드 세그먼트 에 있 는 이 종류 입 니 다.
static-PHP 5.3 을 추가 한 것 은 현재 클래스 일 수 밖 에 없습니다.$this 와 비슷 하 다 는 뜻 입 니 다.메모리 에서 추출 하고 현재 예화 된 클래스 에 접근 합 니 다.그러면 static 은 그 클래스 를 대표 합 니 다.
외국인 의 전문 적 인 설명 을 살 펴 보 자.
self refers to the same class whose method the new operation takes place in.
static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.
In the following example, B inherits both methods from A. self is bound to A because it's defined in A's implementation of the first method, whereas static is bound to the called class (also see get_called_class() ).
상위 코드:
class Person {
public static function get_self() {
return new self();
}
public static function get_static() {
return new static();
}
}
class WangBaoqiang extends Person{}
echo get_class(WangBaoqiang::get_self()); // Person
echo get_class(WangBaoqiang::get_static()); // WangBaoqiang
echo get_class(Person::get_static()); // Person
하지만 하위 클래스 에 get 을 사용 하고 싶다 면class 에서 돌아 오 는 것 도 현재 하위 클래스 의 이름('wangbaoqiang')입 니 다.어떻게 해 야 합 니까?
<?php
class Person {
public function create1() {
$class = get_class($this);
return new $class();
}
public function create2() {
return new static();
}
}
class WangBaoqiang extends Person {
}
$wangBaoQiang = new WangBaoqiang();
var_dump(get_class($wangBaoQiang->create1()), get_class($wangBaoQiang->create2()));
/*
The result
string(1) "WangBaoqiang"
string(1) "WangBaoqiang"
*/
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 PHP 의 new static()과 new self()의 비교 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
📋 모던 자바스크립트 Deep Dive | 17장 생성자 함수에 의한 객체 생성new 연산자와 Object 생성자 함수를 호출하면 빈 객체를 생성해서 반환한다. 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 마치 객체(인스턴스)를 생성하기 위한 템플릿(클래스)처럼...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.