Qual é a maneira mais fácil de carregar um conjunto de dados literais no PHP?

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

  •  19-09-2019
  •  | 
  •  

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top