Какой самый простой способ загрузить набор буквальных данных в PHP?
Вопрос
Я строю небольшую галерею, в которой будет только 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)