기본 콘텐츠로 건너뛰기

'Zend Framework 2'에서 RSS/Atom 피드 만들기



뉴스를 구독하는 방법으로 SNS 이용이 많아지면서 예전만큼의 위상은 아니지만 웹페이지의 업데이트 정보를 쉽게 받아보는 방법으로는 해당 사이트에서 제공하는 RSS/Atom 피드를 구독하는 방법이 있습니다. 이번 포스팅에서는 'Zend Framework 2'에서 이런 피드를 만드는 방법을 정리해보겠습니다. 제가 사용하는 'Zend Framework' 버전이 2.4여서 이 버전을 기준으로 작성하였습니다.

'Zend Framework'에서 피드를 생성하기 위해서는 설정에 먼저 추가를 해주어야 하는 것이 있습니다. 'Zend Framework'는 컨트롤러의 액션 메서드에서 최종값으로 데이터와 렌더링 방법을 담고 있는 ViewModel 객체를 리턴하게 되어 있는데 이 ViewModel에는 3가지 있습니다.

  • 첫번째는 기본 ViewModel입니다. 일반적인 웹페이지를 표시할때 사용합니다.
  • 두번째는 JsonModel입니다. JSON 데이터를 리턴할때 사용합니다.
  • 세번째는 FeedModel입니다. 이 포스팅에서 사용할 객체입니다.

이 세가지 객체중 기본값인 ViewModel은 별다른 설정없이 사용이 가능하나 다른 두가지는 다음과 같이 module.config.php에 추가를 해주어야 합니다.

'view_manager' => array(
    …
    'strategies' => array('ViewFeedStrategy'),
    …
),

그리고, 피드를 표시할 컨트롤러에 해당 클래스 사용을 선언합니다. ‘Zend\Feed\Writer\Feed’는 피드 데이터를 처리할 클래스입니다.


use Zend\Feed\Writer\Feed;
use Zend\View\Model\FeedModel;


이제 준비가 되었으니 피드를 생성해보겠습니다.

public function feedAction()
{
    $feed = new Feed();
    // 피드 타이틀.
    $feed->setTitle('...');
    // 피드 홈페이지 링크.
    $feed->setLink('...');
    // 피드 링크.
    $feed->setFeedLink('...', 'atom');
    // 피드 설명.
    $feed->setDescription('...');
   
    // 피드에 표시할 데이터
    $data = …;

    foreach ($data as $key => $value) {
        // 시간.
        $time = …;
        if ($key == 0) {
            // 피드의 변경 시간 설정.
            // 이 부분은 서비스에 따라 처리 방법이 달라집니다.
            $feed->setDateModified($time);
        }
           
        $entry = $feed->createEntry();
        // 엔트리 타이틀.
        $entry->setTitle($value->title);
        // 엔트리 링크.
        $entry->setLink('...');
        // 엔트리 생성시간 및 변경시간.
        $entry->setDateCreated($time);
        $entry->setDateModified($time);
        // 엔트리 내용.
        $entry->setDescription('...');
           
        $feed->addEntry($entry);
    }
       
    $viewModel = new FeedModel();
    $viewModel->setFeed($feed);
    $viewModel->setOption('feed_type', 'atom');
       
    return $viewModel;
}

간단하죠? 실제 서비스에 적용하기 위해 필요한 추가 기능에 대해서는 ‘Zend Framework’ 개발 문서의 ‘Zend\Feed’ 부분을 참고해주시면 됩니다.


===


Project just4fun : http://www.just4fun.kr/



댓글

이 블로그의 인기 게시물

안드로이드 웨어의 오레오 업데이트

제가 사용하고 있는 엘지 워치 스타일에 대한 안드로이드 오레오 업데이트가 배포되었습니다. 작년 12월초에 엘지 워치 스포츠를 시작으로 발표된 업데이트이니 2달이 걸렸네요. 안드로이드 웨어 오레오 업데이트는 OS적으로 크게 변한 것은 없고 몇가지 기능들이 추가된 업데이트입니다. 이번 업데이트에서 추가된 기능들에 대해 간단히 알아보겠습니다.

파일 관리자 (Clean File Manager) : 깔끔한 안드로이드 파일 관리 앱

안드로이드의 파일 관리 앱으로는 '아스트로 파일 관리자'나 'ES 파일 탐색기'가 유명한데 이 앱들은 저에게는 너무 번잡한 앱들입니다. 파일 관리라는 단순한 기능이 필요한 저로서는 너무 많은 기능을 가지고 있어 무겁고 인터페이스도 어색한 앱들이어서 대안을 찾다가 괜찮은 앱이 있어 소개합니다.

'파일 관리자 (Clean File Manager)'는 위 두 앱들에 비해 기본에 충실한 앱입니다. 클라우드 서비스를 지원하지도 않고 PC 접속 기능도 없습니다. 파일 관리를 제외한 기능으로는 설치된 앱 목록을 표시해주는 기능이 거의 유일한 부가 기능입니다. 그러나, 저처럼 단순한 파일 관리 앱을 원하는 사람에게는 딱인 앱이죠.


PHP에서 보안 문제를 해결하는 법

한빛미디어 홈페이지에 'PHP에서 보안 문제를 해결하는 법' 이라는 기사가 있습니다. PHP로 개발시 주의해야하는 3가지 보안 문제와 이를 막는 방법에 대한 외국 기사를 번역한 기사인데 관련 사항을 잘모르시는 분들에게 도움이 될 것 같아 기사에 소개된 내용들에 제 생각을 추가하여 정리해보겠습니다.