6

JavaScript처럼 구현 된과 같은 종류의 프로토 타입 상속을 사용할 수 있습니까?PHP에서의 프로토 타입 상속

이 질문은 호기심에서 벗어난 내 마음에 온 것입니다. 그런 것을 구현하고 고전적 유산을 버려야 만하는 것은 아닙니다. 그것은 단지 탐험하는 흥미로운 지역처럼 느껴집니다.

에 기능은 익명 함수의 조합으로 프로토 타입 상속 일종의 PHP에서 고전 상속 모델 결합이 사전 빌드 있습니까?

의 내가 자바 스크립트에서 발견처럼 당신이 다소 비슷한하지만, 실제 프로토 타입 상속을 달성하기 위해 Prototype Creational Pattern을 사용할 수 있습니다 UserModel

class UserModel implements PrototypalInheritance 
{ 
    // setters, getters, logic.. 
    static public function Prototype() {} 
} 

$user = new UserModel(); 

UserModel::prototype()->getNameSlug = function() { 
    return slugify($this->getUserName()); 
} 

echo $user->getNameSlug(); 

답변

2

에 대한 간단한 클래스가 있다고 가정하자 AFAIK 수 없습니다.

mixins/traits와 같은 것을 찾으려면 Decorators을 사용할 수 있습니다.

그래도 RFC about whether to have traits in PHP6이 있습니다.

당신이 할 수있는 일은 SplObjectStorage를 통해 복제 된 객체의 라이프 사이클을 추적하는 Prototype 패턴입니다. 프로토 타입이 변경 될 때마다, 빌더는 맵을 관통하고 이에 따라 인스턴스를 조정합니다. 원숭이 패치는 runkit을 통해 완료되어야합니다. 너무 실현 가능하지 않습니다 imho :)

+0

훌륭한 출처를 가져 주셔서 감사합니다. PHP6의 특성이 흥미롭게 보입니다. 요즘에는 PHP 5.3.0 (익명의 마술에 필요한 :-D)으로 웹 호스팅을 찾기가 어렵습니다. 프로토 타입 패턴이 유망 해 보입니다. 데코레이터는 Proto의 단순성을 무너 뜨리는 것처럼 보입니다. 일종의 Dependency Injection이 필요하기 때문입니다. –