PHPに一連のリテラルデータをロードする最も簡単な方法は何ですか?
質問
私は20個ほどしか画像しかない小さなギャラリーを構築しています。このデータをどこか(PHPファイル自体でも)保存したいので、データをリテラルまたはリソースファイルとしてエンコードする方法を検討しています。
JavaScriptでは、(メモリから)似た表記法を使用します。
var albums = [
{ name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
{ name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]
これは本質的にJSONです。
JavaScriptはPHPよりも動的であると思うので、これは不可能です。おそらくXMLを使用していくつかのクラスにバインディングする簡単な代替品はありますか?
私は完全なPHP初心者なので、あなたの答えに知識を想定しないでください。
解決
PHPファイルに保存する一定のデータがある場合は、JavaScriptで行ったのと同じことを使用できます。PHPアレイを宣言するだけです。
このようなことはトリックをするべきです:
$albums = array(
array(
'name' => "Album 1",
'photos' => array('photo1.jpg', 'photo2.jpg'),
),
array(
'name' => "Album 2",
'photos' => array('photo3.jpg', 'photo4.jpg'),
),
);
そして、そして、あなたはただ一緒に働くことができます $albums
配列。
もちろん、そうではありません 簡単 更新するには、有効なPHPコードを記述する必要がありますが、あなたが言ったように、いくつかの画像しか持っていない場合、管理するのはそれほど難しくないはずです。
別の解決策は、データを外部ファイルに保存することです (たとえば、XMLまたはJSONで), 、そして、ようなものを使用します simplexml_load_file
また json_decode
それを読む。
しかし、それはもう少し作業を意味します - あなたの場合にはそれほど必要ではないかもしれませんか?
他のヒント
データを別のものに保存します JSON ファイル、およびPHPを使用します json_decode() それをPHPオブジェクトに解析する機能。
このアプローチを使用して、Ajaxを介してJavaScriptのデータに簡単にアクセスできます。
この方法は、PHPファイルにデータを保存するよりも操作しやすく、必要に応じてデータをプログラムで簡単に更新できることも意味します。
PHPでは、おそらくこれを配列として定義するでしょう。
$albums = array(
0 => array('name' => 'Album 1', 'photos' => array('photo1.jpg', 'photo2.jpg')),
1 => array('name' => 'Album 2', 'photos' => array('photo3.jpg', 'photo4.jpg'))
);
PHPでまったく同じことができます。
$albums = array(
array(
'name' => 'Album 1',
'photos' => array(
'photo1.jpg',
'photo2.jpg',
)
),
array(
'name' => 'Album 2',
'photos' => array(
'photo3.jpg',
'photo4.jpg',
)
)
);
しかし、これは悪いスタイルです。クラスを作成することをお勧めします。
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);
var_export と json_encode 可能性です。
file_put_contents($path_to_file, json_encode($albums));
可能性の数があります
- XMLファイル(単純なのを使用して解析する)
- ini -format-それが最も単純なので私のお気に入り(使用 parse_ini_file と友達)
- Yaml(使用 http://code.google.com/p/spyc)