2014-12-31 3 views
0

PHP 비디오 강의를보고있었습니다. 나는 정적 함수 내 튜토리얼 지금 내 프로젝트 디렉토리에 user 클래스가 그 사람이 첫 번째 경우의 개념에 대해 나를 인도 시겠어요이PHP : 차이점 새롭고 새로운 객체()

$object= new user(); 

처럼 사용할 곳은이

private static function instantiate($result){ 
$object = new self; 
//here goes loop 
} 

와 같은 인스턴스 그것이라고하는 곳 new self

답변

2

"self"는 현재 클래스를 참조하는 키워드입니다. 클래스 코드 내에서만 사용할 수 있습니다.

클래스를 사용하여 메서드를 호출 할 수 있지만 바인딩으로 인해이 메서드를 사용하여 수퍼 클래스의 메서드를 호출 할 수도 있습니다.()를 TestB :: makeNewInstance를 호출, 지금

class TestA { 
    public static function makeNewInstance() { 
    return new TestA(); 
    } 
} 

class TestB extends TestA { 
} 

;

는 다음과 같은 예를 생각해 TestA의 인스턴스를 반환합니다. 를 TestB의 인스턴스를 반환합니다)를 TestB :: makeNewInstance을 (전화,

class TestA { 
    public static function makeNewInstance() { 
    return new self(); 
    } 
} 

class TestB extends TestA { 
} 

을 지금이 하나와 비교

을 (를 TestB 메소드를 상속 있지만하여 TestA 직접 연결, 그래서 여전히 반환됩니다). (자체 참조하는 현재 클래스를 참조하고 TestB에서 호출하는 경우 "self"의 내용은 이제 TestA 대신 TestB가됩니다.

희망을 설명합니다. 그렇지 않으면 귀하의 질문에 좀 더 자세하게 더 구체적인 답변을 찾아야합니다.

+0

대단한 설명 – Sikander

0

self는 쓰는 학급을 가리킨다. 참조 What does new self(); mean in PHP?

$ object = new user(); // 클래스 클래스의 객체를 사용자 클래스 외부로 만듭니다.