Qual è il modo più semplice per caricare un set di dati letterali in PHP?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Sto costruendo una piccola galleria che avrà solo 20 o giù di immagini in esso. Mi piacerebbe avere questi dati memorizzati da qualche parte (anche nel file PHP stesso) e così sto cercando il modo di codificare i dati in un file letterale o di risorse.

In JavaScript, vorrei usare la notazione simile (a memoria):

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

Questa è JSON, in sostanza.

Suppongo JavaScript è più dinamico di PHP e quindi questo non è possibile. C'è una semplice alternativa, magari utilizzando XML e vincolante per alcune classi?

Sono un principiante di PHP, quindi per favore non assumere alcuna conoscenza nella vostra risposta.

È stato utile?

Soluzione

Se v'è solo alcuni dati costanti che si desidera memorizzare in un file PHP, è possibile utilizzare la stessa cosa che avete fatto in Javascript:. Basta dichiarare un array PHP


Qualcosa del genere dovrebbe fare il trucco:

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

E, poi, si può solo lavorare con l'array $albums.


Naturalmente, non è semplice per aggiornare, è necessario scrivere del codice PHP valido -. Ma se avete solo un paio di immagini, come hai detto tu, non dovrebbe essere così difficile da gestire


Un'altra soluzione potrebbe essere quella di memorizzare i dati in un file esterno (in formato XML o JSON, per esempio) , e usare qualcosa come simplexml_load_file o json_decode per leggerlo.

Ma significa un po 'più di lavoro - in modo forse non quello necessario nel vostro caso

Altri suggerimenti

Salva i dati in un JSON di file href="http://www.json.org/", e utilizzare PHP json_decode () funzione per analizzare in oggetti PHP.

Con questo approccio, hai anche avuto un facile accesso ai dati in JavaScript tramite la tecnologia AJAX, se si decidesse di muoversi in questa direzione.

In questo modo è più facile da lavorare rispetto la memorizzazione dei dati nel file PHP, e significa anche che è possibile banalmente aggiornare i dati a livello di codice, se il bisogno mai si pone.

In PHP si sarebbe probabilmente definire questo come un array, vale a dire.

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

Si può fare la stessa identica in PHP:

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

Ma questo è un cattivo stile. Si potrebbe desiderare di creare una 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);

Non dimenticare serializzare

  

serialize - Genera una rappresentazione immagazzinabile di un valore

serialize funziona su PHP oggetti troppo che JSON e XML non

var_export e json_encode sono possibilità.

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

ci sono diverse possibilità

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top