트레이트 – 17.정적 멤버와 싱글턴 패턴

트레이트는 정적 변수, 정적 프로퍼티와 정적 메소드를 모두 정의할 수 있습니다. 트레이트는 기존의 클래스가 구성하고 있는 상속 관계를 전혀 손상시키지 않으면서, 더욱 심플하게 작성된 코드를 재사용할 수 있으므로, 트레이트에서 지원하는…

Continue Reading트레이트 – 17.정적 멤버와 싱글턴 패턴

트레이트 – 11.다중 상속 모델

클래스는 동시에 여러 개의 트레이트를 조합할 수 있습니다. 클래스에 use 문을 사용하여 여러 개의 트레이트를 쉼표로 구분하여 나열하면 다중 트레이트(multiple trait)를 구현할 수 있습니다. 다중 상속 모델 다중 상속(multiple inheritance)의…

Continue Reading트레이트 – 11.다중 상속 모델

트레이트 – 02.수평적 재사용

PHP의 수평적 재사용(Horizontal Reuse) 클래스 계층 구조로부터 독립적으로 행위(behavior)를 재사용하는 수평적 방법의 주요 동기는 명확한 개념적 배경과 최적의 코드 재사용을 동시에 사용하여 클래스 및 클래스 계층을 모델링 할 수 있는…

Continue Reading트레이트 – 02.수평적 재사용

트레이트 – 20.트레이트 관련 함수

리플렉션 기능 함수 리플렉션 API와 관계없이, 기존의 클래스 또는 인터페이스에서 제공되는 관련 함수와 발을 맞춰서 리플렉션 기능의 트레이트 함수가 추가되었습니다. trait_exists 클래스와 인터페이스가 아닌 트레이트가 존재하는지 여부를 반환함 get_declared_traits 클래스나…

Continue Reading트레이트 – 20.트레이트 관련 함수

트레이트 – 18.트레이트 프로퍼티

트레이트는 프로퍼티를 정의할 수도 있습니다. 그러나 트레이트에서 정의한 프로퍼티를 클래스에서 다시 정의하려면, 클래스에서 정의한 프로퍼티는 트레이트와 호환되어야 합니다. 즉 동일한 가시성과 초기값을 지정하여야 합니다. 트레이트와 클래스의 프로퍼티가 서로 호환되지 않으면,…

Continue Reading트레이트 – 18.트레이트 프로퍼티

트레이트 – 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.메소드 가시성 변경