차이

2017-05-23 8 views
2
내가 하나가 .cfc 구성 요소를 확장해야합니다,하지만 난 이런 걸 볼 수있는 cfwheels 프레임 워크 소스를 읽고있다 생각

: 확장 사이의 차이가차이

<cfcomponent output="false" displayName="Controller"> 
    <cfinclude template="../wheels/controller.cfm"> 
</cfcomponent> 

무엇을 구성 요소 및 위에 포함 된 템플릿 포함?

또한 내가 염두에 두어야 할 범위 지정 문제가 있습니까?

+0

[Mixin] (https://en.wikipedia.org/wiki/Mixin)이라는 디자인 패턴입니다. "객체 지향 프로그래밍 언어에서 mixin은 클래스입니다 이 클래스에는 다른 클래스의 부모 클래스가 아니어도 다른 클래스에서 사용할 메서드가 들어 있습니다. [...] 믹스는 때로는 "상속"보다는 "포함 된"것으로 기술됩니다. "범위 지정과 함께 포함 된 파일 내의 함수는 여전히 올바르게 범위가 지정되어야하며 포함 된 함수는 객체에 액세스 할 수 있어야합니다. – beloitdavisja

답변

4

나는 이것이 포함/확장 파일에 무엇이 있었는지 완전히 의존한다고 생각합니다. CFC가 현재 레벨 아래로 확장 될 수 없기 때문에 (extend = ".. /wheels/controller.cfm") 확장 할 수 없기 때문에 이것은 기본적으로 "프록 싱" 파일을 직접. "../wheels/controller.cfm"을 확장하려면 먼저 로컬 디렉토리 (proxy.cfc)에 새 cfc를 작성하고 거기에 controller.cfm 파일을 포함시켜 파일을 실제로 프록시해야합니다. 그런 다음 프록시를 확장하십시오. cfc.

기능상으로는 매우 유사합니다. 개념적으로, 포함 된 cfm 파일에는 개별적인 문제를 해결하는 특정 기능이있을 수 있지만 확장 된 cfc 파일은 실제로 모든 기능을 수행하는 조각이어야합니다 확장 클래스에 필요한 동작을 유지하는 것입니다.

+0

다른 파일을 여러 개 직접 포함 할 수 있지만 여러 파일을 직접 확장 할 수는 없습니다. – Shawn

+0

Ruby와 관련되었지만 여전히 적용 가능합니다. http://knowpapa.com/usecase-dependencies/ – Shawn