Was ist der einfachste Weg, um eine Reihe von wörtlichen Daten in PHP zu laden?
Frage
Ich baue eine kleine Galerie, die nur 20 Bilder enthält. Ich möchte, dass diese Daten irgendwo (auch in der PHP -Datei selbst) gespeichert werden, und suche daher nach Möglichkeiten, die Daten als wörtliche oder eine Ressourcendatei zu codieren.
In JavaScript würde ich eine Notation verwenden, die ähnelt (aus dem Speicher):
var albums = [
{ name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
{ name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]
Dies ist JSON im Wesentlichen.
Ich nehme an, JavaScript ist dynamischer als PHP und dies ist daher nicht möglich. Gibt es eine einfache Alternative, möglicherweise mit XML und einer Bindung an einige Klassen?
Ich bin ein vollständiger Php -Anfänger, nimm bitte kein Wissen in deiner Antwort an.
Lösung
Wenn Sie nur einige konstante Daten haben, die Sie in einer PHP -Datei speichern möchten, können Sie dasselbe wie in JavaScript verwenden: Deklarieren Sie einfach ein PHP -Array.
So etwas sollte den Trick machen:
$albums = array(
array(
'name' => "Album 1",
'photos' => array('photo1.jpg', 'photo2.jpg'),
),
array(
'name' => "Album 2",
'photos' => array('photo3.jpg', 'photo4.jpg'),
),
);
Und dann kannst du einfach mit dem arbeiten $albums
Array.
Natürlich ist es nicht einfach Um zu aktualisieren, müssen Sie einen gültigen PHP -Code schreiben. Wenn Sie jedoch nur ein paar Bilder haben, wie Sie sagten, sollte es nicht so schwer zu verwalten sein.
Eine andere Lösung wäre, die Daten in einer externen Datei zu speichern (zum Beispiel in XML oder JSON), und benutze so etwas wie simplexml_load_file
oder json_decode
es lesen.
Aber es bedeutet ein bisschen mehr Arbeit - also vielleicht nicht so notwendig in Ihrem Fall?
Andere Tipps
Speichern Sie die Daten in einem separaten JSON Datei und verwenden Sie PHPs JSON_DECODE () Funktionieren Sie es in PHP -Objekte.
Mit diesem Ansatz haben Sie auch einen einfachen Zugriff auf die Daten in JavaScript über AJAX, wenn Sie sich jemals in diese Richtung bewegen.
Auf diese Weise ist es einfacher, Daten in Ihrer PHP -Datei zu speichern, und dies bedeutet auch, dass Sie die Daten programmgesteuert aktualisieren können, wenn jemals der Bedarf entsteht.
In PHP würden Sie dies wahrscheinlich als Array definieren, dh.
$albums = array(
0 => array('name' => 'Album 1', 'photos' => array('photo1.jpg', 'photo2.jpg')),
1 => array('name' => 'Album 2', 'photos' => array('photo3.jpg', 'photo4.jpg'))
);
Sie können genau das Gleiche in PHP machen:
$albums = array(
array(
'name' => 'Album 1',
'photos' => array(
'photo1.jpg',
'photo2.jpg',
)
),
array(
'name' => 'Album 2',
'photos' => array(
'photo3.jpg',
'photo4.jpg',
)
)
);
Aber das ist ein schlechter Stil. Vielleicht möchten Sie eine Klasse erstellen:
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);
Vergiss nicht Serialisieren
Serialisierung - erzeugt eine aufbewahrbare Darstellung eines Wertes
Serialize funktioniert auch an PHP -Objekten, die JSON und XML nicht tun
var_export und JSON_ENCODE sind Möglichkeiten.
file_put_contents($path_to_file, json_encode($albums));
Es gibt eine Reihe von Möglichkeiten
- XML -Datei (verwenden Sie SimplexML, um sie zu analysieren)
- Ini -Format - mein Favorit, da es am einfachsten ist (Verwendung Parse_ini_file und Freunde)
- Yaml (Verwendung http://code.google.com/p/spyc)