2010-04-05 2 views
1

많은 블로그 게시물과 포럼 주제를 읽고 PHP에서 데이터 매퍼/모델 구현에 대한 예제를 제공했지만 필자는 파일 저장/이미지.데이터 맵퍼, 모델 및 이미지

저는 현재 젠드 프레임 워크 기반 프로젝트에서 작업 중입니다. 모델에서 일부 이미지 조작 (파일 경로가 전달됨)을 수행 한 다음 해당 파일을 저장하기 위해 매퍼에 남겨두고 있습니다. 적절한 위치로 - 이것은 일반적인 관행입니까?

그렇다면 전달 된 이미지와 다른 크기의 이미지를 어떻게 작성합니까? 현재 이미지 유형을 확인하고 크기를 변경 한 다음 원래 파일 이름으로 다시 저장하는 setImage($path_to_tmp_name)이 있습니다. getImagePath()에 대한 호출은 데이터 맵퍼가 사용할 수있는 현재 파일 경로를 반환 한 다음 setImagePath($path)에 대한 호출로 변경합니다 (예 : "/ content/my_images"). 이 소리가 너에게 실용적인가요?

또한 해당 이미지의 URL을 어떻게 처리합니까? 그 모델이 제공해야하는 것으로 보입니까? 저의 모델은 이미지 저장 위치 나 궁극적으로 브라우저를 통해 액세스하는 방법에 대해 걱정해야합니다. 그래서 ini 파일에 저장하고 URL 접두사를 뷰에 전달해야합니다. 제어 장치. 그게 합리적이라고 생각하니?

저는 이미지 조작에 GD를 사용하고 있습니다. 관련성이 없습니다.

업데이트 : 이미지 크기 조정이 모델에서 수행되어야하는지 궁금해했습니다. 이 모델은 특정 크기의 "주"이미지와 "엄지"이미지를 제공해야 할 수도 있습니다. 필요한 크기를 정의하는 무언가를 반환하는 모델에서 getImageSpecs() 함수를 만드는 것에 대해 생각해 보았습니다. 그러면 별도의 이미지 조작 클래스가 크기 조정과 (아마도 컨트롤러에서) 수행 할 수 있으며 마지막 경로를 모델은 setImagePaths($images)과 같은 것을 사용합니다.

어떤 생각이 많이 감사합니다 :) 즉, 서비스 계층 (귀하의 경우 매퍼가) 무엇을해야하는지 정확히으로

답변

0

내가 첫번째 파일 경로 저장 맵퍼를 가진 것이 일반적인 관행이라고 말할 것입니다. 가장 좋은 방법은 생성 된 각 파일에 대한 경로를 만드는 것입니다.

$path = '/path/to/root/' . substr(chunk_split(md5(<unique id for file>), 2, '/'), 0, 5); 

위 경로를 수행하면/path/to/root/ab/23 /과 같은 경로가됩니다. 각 이미지에 대해 서로 다른 크기가 필요하기 때문에 이제는 각 이미지의 ID 이름과 크기를 저장하십시오. 예 :

$fileName = <uniquie file id from above> . '_50_100' . $ext; 

마지막으로 수행해야 할 작업은 데이터베이스에 경로를 저장하는 것입니다. 그런 다음 모델에서 서비스 계층의 경로를 검색하고 필요한 URL을 작성할 수 있습니다.

+0

대단히 감사합니다. 죄송합니다. 내가 무식하지만 ID를 파일 이름으로 사용하지 않는 이유는 무엇입니까? chunk_spit은 파일의 분류를 돕기위한 것입니까? – James