题
我建立一个小的画廊,只会有20或以图片。我想有这样的数据存储的地方(即使在PHP文件本身)和所以我在寻找方法的编码的数据作为文字或资源的文件。
在JavaScript,我会使用符号表示类似的(从存储器):
var albums = [
{ name='Album 1', photos=['photo1.jpg', 'photo2.jpg'] },
{ name='Album 2', photos=['photo3.jpg', 'photo4.jpg'] }
]
这是式,在本质。
我想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 code-但如果你只有一对夫妇的图像,就像你说的,它不应是很难管理。
另一个解决办法是将数据存储在一个外部文件 (XML或式,例如), 和使用的东西喜欢 simplexml_load_file
或 json_decode
读它。
但它意味着更多的工作--因此也许不必要在你的情况?
其他提示
数据保存在一个单独的 json 文件和使用PHP的 json_decode() 功能分析成PHP的对象。
使用这种方法,你也得到了方便访问该数据在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文件(使用SimpleXML解析)
- ini-format - 我最喜欢的,因为它是最简单的(使用 解析ini文件 和朋友)
- Yaml(使用 http://code.google.com/p/spyc)