¿Cuál es la forma más fácil de cargar un conjunto de datos literales en PHP?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy construyendo una pequeña galería que solo tendrá aproximadamente 20 imágenes. Me gustaría tener estos datos almacenados en algún lugar (incluso en el archivo PHP) y, por lo tanto, estoy buscando formas de codificar los datos como un archivo literal o de recursos.

En JavaScript, usaría la notación parecido (de la memoria):

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

Este es JSON, en esencia.

Supongo que JavaScript es más dinámico que PHP, por lo que esto no es posible. ¿Existe una alternativa simple, tal vez usando XML y vinculación a algunas clases?

Soy un novato completo de PHP, así que no asuma ningún conocimiento en su respuesta.

¿Fue útil?

Solución

Si solo tiene algunos datos constantes que desea almacenar en un archivo PHP, puede usar lo mismo que en JavaScript: solo declare una matriz PHP.


Algo como esto debería hacer el truco:

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

Y, entonces, solo puedes trabajar con el $albums formación.


Por supuesto que no es fácil Para actualizar, debe escribir un código PHP válido, pero si solo tiene un par de imágenes, como dijo, no debería ser tan difícil de administrar.


Otra solución sería almacenar los datos en un archivo externo (en XML o JSON, por ejemplo), y usar algo como simplexml_load_file o json_decode para leerlo.

Pero significa un poco más de trabajo, ¿tal vez no sea necesario en su caso?

Otros consejos

Guardar los datos en un json archivo y usar php's json_decode () Funcionar para analizarlo en objetos PHP.

Usando este enfoque, también tiene fácil acceso a los datos en JavaScript a través de AJAX, si alguna vez decide moverse en esa dirección.

Es más fácil trabajar con esta manera que almacenar datos en su archivo PHP, y también significa que puede actualizar trivialmente los datos mediante programación si alguna vez surge la necesidad.

En PHP probablemente definirías esto como una matriz, es decir.

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

Puedes hacer exactamente lo mismo en PHP:

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

Pero este es un mal estilo. Es posible que desee crear una clase:

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);

No te olvides de publicar por fascículos

Serializar: genera una representación almacenable de un valor

Serializar trabajos en objetos PHP también que JSON y XML no

var_export y JSON_ENCODE son posibilidades.

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

Hay número de posibilidades

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top