2012-12-10 2 views
0

구성 요소, 유틸리티 및 동작의 차이점을 이해하는 데 문제가 있습니다. 나는 요리 책을 읽었지만 부분적으로 만 도움이되었습니다.CakePHP 코드 구성

예 : 업로드시 이미지의 크기를 조정하거나 자르고 싶습니다. 서로 다른 모델 및 컨트롤러/동작과 관련된 여러 가지 양식을 사용하겠습니다.

은 분명히 나는 ​​, saveImage 및 기타 유용한 방법의 크기를 조정 규모와 클래스를 작성해야합니다. 다른 곳에서도이 방법을 사용할 수 있어야합니다.

제 질문은 -이 코드를 올릴 적절한 위치는 어디입니까? 그리고 누군가가 구성 요소, 유틸리티 및 동작 간의 핵심 차이점에 대한 간단한 예제를 제공 할 수 있습니까? 나 때문에 구성 요소와 유틸리티는 매우 비슷해 보입니다. 여러 모델에서 재사용해야한다 코드를 삽입 위치를

답변

2
  • 행동모델에 적용되는 논리의 패키지입니다.
  • 구성 요소컨트롤러에 적용되는 논리 패키지입니다.
  • 유틸리티은 MVC의 특정 부분에 반드시 적용되는 것은 아닌 일반 라이브러리입니다.

유틸리티 및 동작/구성 요소 사이의 큰 차이는 유틸리티 클래스가 핵심 MVC 클래스를 확장하지 않으며, 따라서 자동으로 부모 클래스의 요청주기에 후크를받을 수 없다는 것입니다. 예를 들어 Component에서 컨트롤러가 호출 될 때마다 컨트롤러가 레이아웃/뷰를 자동으로 렌더링하기 전에 호출 될 beforeRender() 함수를 구현할 수 있습니다.

또한 유틸리티 클래스는 사용 전에 변수에 인스턴스화하고 할당해야합니다. $myUtil = new MyUtility(); $myUtil->blah() - Behaviors/Components/Helpers는 클래스에로드 될 때 인스턴스화되며 $this->MyComponent->blah()으로 참조 될 수 있습니다.

경우에 따라 이미지 조작 논리는 Component 또는 Utility 클래스에 속할 가능성이 높기 때문에 어느쪽으로 든 구현할 수 있습니다. 개인적으로, 나는 당신이 컨트롤러 외부에서 이미지 조작 로직을 사용하지 않을 것이기 때문에 컴포넌트를 쓰려고 할 것입니다.

편집 : 또한 예를 들어 내가 구글이 검색의 약 2 분 ImageTool, Image Resizer, Image Upload & ResizerThumbnail을 발견, 발견하고 누군가가 이미 작성했습니다 기존 구성 요소를 사용하는 것이 좋습니다.

+0

이러한 구성 요소를 살펴 보겠습니다. 하지만 무엇보다도 먼저 작동 방식을 이해하고 유사한 기능을 만드는 방법을 배우고 싶습니다. :) 당신의 대답은 매우 도움이되었습니다, 감사합니다! – Derp

0

행동은 여러 개의보기

에 걸쳐 사용되는 여러 컨트롤러 당신이 코드를 삽입하는 도우미를 통해 사용됩니다 당신이 코드를 삽입하는 구성 요소 그것이 기본 고장입니다.

컨트롤러가 응용 프로그램 논리를 담당하기 때문에 업 로더/스케일러를 구성 요소로 구축하는 것이 가장 중요합니다. 당신이 데이터에 액세스하거나 데이터베이스에서 반환되는 방법을 수정하기 위해 필요한 경우 (이 모델 층에 영향을 미치는로) 당신이 HTML 또는 일부를 생성하기위한 몇 가지 재사용 가능한 코드를 작성하는 데 필요한 경우

, 그

행동이 될 것입니다 보기 출력의 유형, 도우미가 될 것입니다.

이미지를 업로드, 크기 조정 및 크기 조정하는 예를 보려면 나는 이것을 구성 요소로 만들 것입니다. 예를 들어 업로드, 저장 및 축소판 이미지를 만드는 UploadComponent.php라는 구성 요소가 있습니다.

var components = array('Upload'); 

을 그리고 난 다음을 수행하여 내 컨트롤러에서 사용할 수 있습니다 :

나는 수행하여 내 컨트롤러에이 구성 요소를 추가 당신이 당신의 구성 요소를 구현하는 방법의

$this->Upload->createThumbnail(200, 200); 

세부 사항을 분명히 당신에게 달려 있습니다.

희망이 있습니다.

+0

예, 감사합니다. – Derp