Qual é a maneira mais fácil de carregar um conjunto de dados literais no PHP?
Pergunta
Estou construindo uma pequena galeria que terá apenas 20 imagens. Eu gostaria de armazenar esses dados em algum lugar (mesmo no próprio arquivo php) e, portanto, estou procurando maneiras de codificar os dados como um arquivo literal ou de recursos.
Em JavaScript, eu usaria a notação parecida (da memória):
var albums = [
{ name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
{ name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]
Este é o JSON, em essência.
Suponho que o JavaScript é mais dinâmico que o PHP e, portanto, isso não é possível. Existe uma alternativa simples, talvez usando XML e vinculando algumas classes?
Eu sou um novato completo do PHP, então, por favor, não assuma nenhum conhecimento em sua resposta.
Solução
Se você possui apenas alguns dados constantes que deseja armazenar em um arquivo php, poderá usar a mesma coisa que fez no JavaScript: basta declarar uma matriz PHP.
Algo assim deve fazer o truque:
$albums = array(
array(
'name' => "Album 1",
'photos' => array('photo1.jpg', 'photo2.jpg'),
),
array(
'name' => "Album 2",
'photos' => array('photo3.jpg', 'photo4.jpg'),
),
);
E então, você pode trabalhar com o $albums
variedade.
Claro, não é fácil Para atualizar, você deve escrever algum código PHP válido - mas se você tiver apenas algumas imagens, como disse, não deve ser tão difícil de gerenciar.
Outra solução seria armazenar os dados em um arquivo externo (em XML ou JSON, por exemplo), e use algo como simplexml_load_file
ou json_decode
para ler.
Mas isso significa um pouco mais de trabalho - então talvez não seja necessário no seu caso?
Outras dicas
Salve os dados em um separado JSON arquivo e use PHP's json_decode () função para analisá -lo em objetos PHP.
Usando essa abordagem, você também tem acesso fácil aos dados em JavaScript via Ajax, se você decidir se mover nessa direção.
Dessa forma, é mais fácil trabalhar do que armazenar dados em seu arquivo PHP e isso também significa que você pode atualizar trivialmente os dados programaticamente, se surgir a necessidade.
No PHP, você provavelmente definiria isso como uma matriz, ou seja.
$albums = array(
0 => array('name' => 'Album 1', 'photos' => array('photo1.jpg', 'photo2.jpg')),
1 => array('name' => 'Album 2', 'photos' => array('photo3.jpg', 'photo4.jpg'))
);
Você pode fazer exatamente o mesmo no PHP:
$albums = array(
array(
'name' => 'Album 1',
'photos' => array(
'photo1.jpg',
'photo2.jpg',
)
),
array(
'name' => 'Album 2',
'photos' => array(
'photo3.jpg',
'photo4.jpg',
)
)
);
Mas isso é um estilo ruim. Você pode querer criar uma classe:
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);
Não se esqueça serializar
Serialize - gera uma representação armazenável de um valor
Serialize funciona em objetos PHP também que JSON e XML não
var_export e JSON_ENCODE são possibilidades.
file_put_contents($path_to_file, json_encode($albums));
Existem várias possibilidades
- Arquivo XML (use Simpxml para analisá -lo)
- ini -format - o meu favorito, pois é o mais simples (use parse_ini_file e amigos)
- YAML (Use http://code.google.com/p/spyc)