트레이트 – 16.추상 트레이트 메소드

private 가시성 지원 트레이트는 트레이트에서 제시하는 요구명세(requirement)를 조합 클래스(exhibiting class)에서 강제로 구현하게 만드는 추상 메소드를 지원합니다. public, protected 및 private 메소드가 지원됩니다. PHP 8 이전에는 public 및 protected 추상 메소드만…

Continue Reading트레이트 – 16.추상 트레이트 메소드

트레이트 – 15.조합 트레이트

클래스가 트레이트를 조합할 수 있는 것처럼 다른 트레이트도 트레이트를 조합할 수 있습니다. 트레이트 정의에서 하나 이상의 트레이트를 조합함으로써, 다른 트레이트에 정의된 멤버의 일부 또는 전부를 사용할 수 있습니다. 트레이트 자체는…

Continue Reading트레이트 – 15.조합 트레이트

트레이트 – 14.메소드 호환성 적용

기반 클래스(base class), 트레이트와 이를 조합한 파생 클래스로 구성된 경우를 살펴보겠습니다. 기반 클래스, 트레이트, 파생 클래스(조합 클래스)로 구성된 경우 기반 클래스와 파생 클래스 간의 속성 호환성은 일반적인 상속 규칙에 따라…

Continue Reading트레이트 – 14.메소드 호환성 적용

트레이트 – 13.메소드 가시성 변경

메소드 가시성(visibility) 변경 트레이트는 재사용 유닛을 의미하므로 지정자는 조합된 클래스의 컨텍스트에서 쉽게 변경할 수 있어야 합니다. 이에 따라, 트레이트 메소드에 별칭을 부여할 때 메소드의 가시성 지정자(visibility modifier; 접근제한자)도 변경할 수…

Continue Reading트레이트 – 13.메소드 가시성 변경

트레이트 – 12.충돌 방지 연산자

트레이트는 이미 다른 프로그래밍 언어에서 사용되며 충돌이 발생할 수 있다는 것을 보여 주었지만 이것은 정해진 방식(rule)이라기 보다는 예외적인 상황(exception)입니다. 대부분의 시스템에서 충돌 방지(conflict resolution)를 위한 메커니즘은 자주 사용되는 것은 아니지만…

Continue Reading트레이트 – 12.충돌 방지 연산자

트레이트 – 10.재정의 우선 순위

기반 클래스(base class)에서 상속된 멤버는 트레이트에 의해 조합된 멤버에 의해 재정의 됩니다. 우선 순위는 현재 클래스(파생 클래스)의 메소드가 트레이트 메소드를 재정의 하고, 이어서 상속된(기반 클래스에 있는) 메소드를 재정의 하는 것입니다.…

Continue Reading트레이트 – 10.재정의 우선 순위

트레이트 – 09.트레이트 로컬 스코프

트레이트의 로컬 스코프에 대한 개념은 RFC 문서 nonbreakable traits에 잘 정리되어 있습니다. 그러나 RFC 문서에서는 트레이트 조합을 위한 use 문을 사용하지 않았고, 대신에 include 문으로 설명하고 있으며, 트레이트 로컬 스코프에…

Continue Reading트레이트 – 09.트레이트 로컬 스코프

트레이트 – 08.클래스 스코프

트레이트는 상속이 아닌 복사·붙여넣기 메커니즘에 따라 클래스에 조합(insert)되기 때문에 아래 예제에서 트레이트 SayWorld와 이를 조합 트레이트 MySayWorld는 동일한 클래스 스코프(class scope)를 가지게 됩니다. 소스 코드 상의 MyHelloWorld 클래스 스코프 컴파일할…

Continue Reading트레이트 – 08.클래스 스코프

트레이트 – 07.복사·붙여넣기 메커니즘

복사·붙여넣기 메커니즘(copy'n'paste mechanism) 앞 장에서 클래스에 조합된 트레이트는 컴파일할 때(compile time) 트레이트의 모든 프로퍼티와 메소드를 복사·붙여넣기 메커니즘과 같이 해당 클래스에 배치한다고 하였습니다. 아래의 예제를 통해 복사·붙여넣기 메커니즘이 어떻게 움직이는지 살펴보기로…

Continue Reading트레이트 – 07.복사·붙여넣기 메커니즘

트레이트 – 06.코드 재사용 메커니즘

코드 재사용 메커니즘(mechanism for code reuse) PHP는 트레이트라는 코드 재사용 방법을 구현합니다. 트레이트는 PHP와 같은 단일 상속 언어(single inheritance language)에서 코드를 재사용하기 위한 메커니즘입니다. 트레이트는 단일 상속이 가지는 제한된 몇…

Continue Reading트레이트 – 06.코드 재사용 메커니즘