Какой самый простой способ загрузить набор буквальных данных в 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.

Используя этот подход, у вас также есть легкий доступ к данным в JavaScript через Ajax, если вы когда -нибудь решите двигаться в этом направлении.

Таким образом, с этим легче работать, чем хранение данных в вашем файле 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 - генерирует хранение значения

Serialize работает и на объектах PHP, которые JSON и XML не

var_export а также json_encode являются возможностями.

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

Есть количество возможностей

  • XML -файл (используйте simplexml, чтобы проанализировать его)
  • INI -Format - мой любимый, поскольку он самый простой (используйте parse_ini_file и друзья)
  • Yaml (используйте http://code.google.com/p/spyc)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top