2013-10-30 2 views
1

내 웹 사이트의 공개 디렉토리의 'messages'하위 디렉토리에있는 파일에 맞춤 컨트롤러 플러그인의 데이터를 쓰고 싶습니다. ZF2의 공개 디렉토리의 실제 경로

사용자 정의 컨트롤러 플러그인

은 매우 간단합니다 :

<?php 

namespace Main\Service; 

class MessageWriter 
{  
    public $data = array(); 

    public function __set($name, $value) 
    { 
     $this->data[$name] = $value; 
    } 

    public function write_message() 
    { 
     $this->time = time(); 
     $data = serialize($this->data); 

     $filename = time() . '_' . rand(1000, 9999); 
     @file_put_contents('/var/www/public/messages/' . $filename, $data); 
    } 

} 

?> 

내가 한 두 개의 작은 문제/질문 :

  1. 어떻게 내가 경로의 하드 코딩을 피할 수 있습니까? 공용 디렉토리 (/ var/www/public)의 실제 경로를 보유하는 ZF2 구성 변수가 없습니까?
  2. ZF2에 파일을 쓰는 데 필요한 클래스가 있습니까? 아니면 file_put_contents 및 유사한 파일 함수를 사용하여 정상입니까?

대단히 감사합니다. 마이크

답변

2

에서 ZF2에서 모든 경로는 응용 프로그램 루트에 상대적이므로 file_put_contents('public/messages/' . $filename, $data)을 사용할 수 있어야합니다. 그리고 file_put_contents()을 사용해도 좋습니다.

+0

도움을 주셔서 감사합니다. – user2939345

+0

이 모든 경로는 상대적인 것이므로 너무 많이 사용하지 않으면 좋습니다. 여러 플러그인, 컨트롤러 (쓰기, 파일 열기, 파일 존재 여부 확인 등)에서 공개 디렉토리 (이 경우 : 공개)의 이름을 하드 코딩해야한다고 가정 해보십시오. 그런 다음 어떤 이유로 든 public에서 public_new로 변경해야합니다. 따라서 하드 코딩 된 값을 어디서나 변경해야하며, 코드가 덜 휴대 할 수 있습니다. 공용 디렉토리의 이름을 유지하기위한 일부 글로벌 구성 변수를 갖는 것이 좋습니다. – user2939345

+0

공용 폴더에 대한 전역 설정이 아닌 해당 경로로 이동하려면 MessageWriter 서비스에 삽입 할 수있는 메시지의 구성 경로를 추가하십시오. –

0

시도

...

APPLICATION_PATH.'/../public/messages/'.$filename 

편집 : 단지 zf1하지 zf2되는이 실현 ...

모든 것이 ZF2

에서 응용 프로그램 경로에 상대적입니다
+0

도움 주셔서 감사합니다. – user2939345