PHPに一連のリテラルデータをロードする最も簡単な方法は何ですか?

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

  •  19-09-2019
  •  | 
  •  

質問

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

忘れないでください シリアライズ

シリアル化 - 値の保存可能な表現を生成します

serializeは、JSONとXMLがしないPHPオブジェクトでも機能します

var_exportjson_encode 可能性です。

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

可能性の数があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top