2008-10-02 4 views
4

나는 Moose에서 PHP 개발로 돌아 왔고 PHP에 대한 객체 모델과 같은 CLOS가 정말 그리워요. 어떤 종류의 문법적 인 설탕을 쓸 수있는 덜 코드 개체를 다루는 PHP에서 있나요?CLOS 같은 객체 모델

이 요구 사항을 조금 더 강조하십시오. 나는 여러 곳에서 한 가지를 쓰고 싶지 않습니다. 나는 자동적으로 생성되는 코드의 일부로 살 수 있지만, 개발해야 할 코드에서 중복 정보를보기를 원하지 않는다. (좀 더 비유가 필요하다면 LISP 매크로를 생각해 보라). 따라서이 부분은 더 이해가된다면 DSL이라고 부를 수도 있습니다.

나는 적어도 역할 (유지 mixin) 및 WEEL를 다시 발명하지 않고 반성의 일종을 가지고 싶어요. 코드 생성기와 자동 로더는이 문제의 적어도 일부를 해결하는 한 가지 방법 일 수 있습니다.

p.s. JavaScript의 경우 Joose이 있으므로 유사한 API가 매우 유용합니다.

+0

자동 getter 및 setters 이외에도 CLOS의 다른 측면을보고 싶습니까? 지난 5 분 동안 CLOS에 관해 읽을 수 있었던 것의 대부분은 PHP에서 달성 할 수 없습니다. –

답변

2

PHP에는 아직 믹스 인이 없지만 거의 동일하게 작동하는 특성에 대한 RFC가 있습니다. http://wiki.php.net/rfc/traits

__call에 오버로드를 사용하면 다른 클래스에 메서드를 디스패치하고 믹스 인처럼 보이게 할 수 있습니다.

+0

언제든지 공식 PHP에서 사용할 수 있습니까? – dpavlin

1

Symfony project has a mechanism for mixins으로, CLOS와 같은 aspect 지향 프로그래밍이 가능합니다. 개인적으로, 나는 이런 종류의 유저 랜드 공간에서의 해킹을 좋아하지 않는다 (적어도 PHP에서는 그렇지 않다). 언어가 제공하는 기능을 사용하는 것이 더 나을 것 같아요. 어쩌면 언어와 같은 특성을 기다릴 수도 있습니다.

+0

좋은 프레임 워크처럼 보이지만 적은 코드, 특히 링크 된 예제의 __construct에 대한 초기 요구 사항이 실패합니다. 몇 번의 독서가 있은 후에도 그것은 나에게 완전히 중복되는 것처럼 보입니다. – dpavlin

+0

나는 그것을 특히 좋아하지 않지만, 원한다면, 거기에있다. – troelskn

관련 문제