2011-04-25 6 views
0
class Photos 
{ 
private $photos = array(); 

function add_photo($filename, $date, $lat, $long) 
{ 
    $this->photos[] = array('filename' => $filename, 'date' => $date, 
          'lat' => $lat, 'long' => $long); 
    return $this; 
} 

    function get_all() 
    { 
     return json_encode($this->photos); 
    } 
    } 

저는 객체 지향 PHP에 익숙하지 않아 여기에서 도움을 얻고 싶습니다. get_all 함수는 내 모든 사진을 반환합니다. 모든 사진 배열 대신 X 배열의 사진 배열을 반환하는 함수를 추가하고 싶습니다. 그러나 나는 그것을 어떻게하는지 모른다. 어떤 도움을 주셔서 감사합니다! 뿐만 아니라 방법에 인코딩 '과정을'이동간단한 oop-php 질문

function get_N($n) { 
    return json_encode(array_slice($this->photos, 0, $n)); 
} 

DRY을 유지하려면, 내가 추천 : $this->photos 이후

+5

아무 관련이 없습니다. –

답변

2

당신이 원하는 부분 집합을 얻을 수 array_slice을 사용할 수 있습니다, 단지 배열입니다

function encode($data) { 
    return json_encode($data); 
} 
function get_N($n) { 
    return $this->encode(...); 
} 

하지만 그럴 필요는 없습니다.

+0

array_slice, 그 중 하나에 대해 알지 못했습니다 :) 감사합니다. 모두 여러분 모두 – Berntsson

+0

PHP에는 많은 유용한 SPL (배열) 함수가 많이 있습니다. http://nl.php.net/manual/en/ref.array.php – Rudie

0
/** 
* Retrieve a photo from an index or a range of photos from an index 
* to a given length 
* @param int index 
* @param int|null length to retrieve, or null for a single photo 
* @return string json_encoded string from requested range of photos. 
*/ 
function get($key, $length = null) { 
    $photos = array(); 
    if ($length === null) { 
     $photos[] = $this->photos[$key]; 
    } 
    else { 
     $photos = array_slice($this->photos, $key, $length); 
    } 
    return json_encode($photos); 
}