PHP에서 문자 그대로 데이터 세트를로드하는 가장 쉬운 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2244336

  •  19-09-2019
  •  | 
  •  

문제

나는 20 개 정도의 이미지 만있는 작은 갤러리를 만들고 있습니다. 이 데이터를 (PHP 파일 자체에도) 어딘가에 저장하고 싶으므로 데이터를 문자 그럴 또는 리소스 파일로 인코딩하는 방법을 찾고 있습니다.

JavaScript에서는 (메모리에서) 유사한 표기법을 사용합니다.

var albums = [
  { name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
  { name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]

이것은 본질적으로 JSON입니다.

JavaScript가 PHP보다 더 역동적이라고 생각하므로 불가능하다고 생각합니다. XML을 사용하고 일부 클래스에 바인딩하는 간단한 대안이 있습니까?

나는 완전한 PHP 초보자이므로 귀하의 답변에 대한 지식을 가정하지 마십시오.

도움이 되었습니까?

해결책

PHP 파일에 저장하려는 일정한 데이터 만 있으면 JavaScript에서와 같은 것을 사용할 수 있습니다. PHP 배열을 선언합니다.


이와 같은 것은 트릭을 수행해야합니다.

$albums = array(
    array(
        'name' => "Album 1", 
        'photos' => array('photo1.jpg', 'photo2.jpg'), 
    ), 
    array(
        'name' => "Album 2", 
        'photos' => array('photo3.jpg', 'photo4.jpg'), 
    ), 
);

그러면 당신은 $albums 정렬.


물론 그렇지 않습니다 쉬운 업데이트하려면 유효한 PHP 코드를 작성해야합니다. 그러나 귀하가 말했듯이 몇 가지 이미지 만 있으면 관리하기가 어렵지 않아야합니다.


또 다른 솔루션은 데이터를 외부 파일에 저장하는 것입니다. (예 : XML 또는 JSON에서), 그리고 같은 것을 사용하십시오 simplexml_load_file 또는 json_decode 읽으려면.

그러나 그것은 조금 더 많은 일을 의미합니다. 그래서 당신의 경우에는 필요하지 않을 수 있습니까?

다른 팁

데이터를 별도로 저장하십시오 JSON 파일 및 PHP를 사용하십시오 json_decode () 그것을 PHP 객체에 구문 분석하는 기능.

이 접근법을 사용하면 해당 방향으로 이동하기로 결정한 경우 Ajax를 통해 JavaScript 데이터에 쉽게 액세스 할 수 있습니다.

이러한 방식은 PHP 파일에 데이터를 저장하는 것보다 작업하기가 더 쉽습니다. 또한 필요가 발생하면 프로그래밍 방식으로 데이터를 사소하게 업데이트 할 수 있음을 의미합니다.

PHP에서는 이것을 배열로 정의 할 것입니다.

$albums = array(
    0 => array('name' => 'Album 1', 'photos' => array('photo1.jpg', 'photo2.jpg')),
    1 => array('name' => 'Album 2', 'photos' => array('photo3.jpg', 'photo4.jpg'))
);

PHP에서 똑같이 할 수 있습니다.

$albums = array(
    array(
        'name'   => 'Album 1',
        'photos' => array(
            'photo1.jpg',
            'photo2.jpg',
        )
    ),
    array(
        'name'   => 'Album 2',
        'photos' => array(
            'photo3.jpg',
            'photo4.jpg',
        )
    )
);

그러나 이것은 나쁜 스타일입니다. 수업을 만들 수 있습니다.

class Album {

    protected $name;

    protected $files;

    public function __construct($name) {
        $this->name = $name;
    }

    public function addFile($file) {
        $this->files[] = $file;
    }

    public function getFiles() {
        return $this->files;
    }

}

$album1 = new Album('Album1');
$album1->addFile('photo1.jpg');
$album1->addFile('photo2.jpg');

$album2 = new Album('Album2');
$album2->addFile('photo3.jpg');
$album2->addFile('photo4.jpg');

$albums = array($album1, $album2);

잊지 마세요 직렬화

직렬화 - 값의 저장 가능한 표현을 생성합니다

Serialize는 JSON과 XML이없는 PHP 객체에서도 작동합니다.

var_export 그리고 json_encode 가능성입니다.

file_put_contents($path_to_file, json_encode($albums));

가능성이 많이 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top