對php來說將一些配置信息數(shù)組保存到文件中是司空見慣的情況,就我目前所知,有以下幾種保存方法
var_export
寫成return array(...);
的php代碼,然后讀取的時候用require
解析即可。serialize
函數(shù)序列化一個數(shù)組,然后讀取的時候用unserialize
反序列化json_encode
序列化一個數(shù)組,然后讀取的時候用json_decode
反序列化yaml
或者ini
有人比較過這幾種方法的優(yōu)劣嗎?哪種方法更好,或者說它們適用的場景有和不同?
人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!
如果你的數(shù)組是只是給php項目用,使用第一種方法是最好的最方便的,我一直用它
如果你的數(shù)據(jù)可能不僅僅被php所用,那最好使用通用性更高的json格式了,當(dāng)然yaml,xml也行,但總歸不如json_encode方便
serialize我還真的很少在保存數(shù)組的時候用到
PS:不好意思剛才沒看到你是說在配置文件的使用。如果是配置文件的話,一定要注意你的php代碼會不會有可能被加密,如果有這種可能性最好是使用json或者yml或者ini等其他格式方便配置文件的修改
我覺得第一種方式不是很好,這樣可能會造成執(zhí)行任意PHP代碼的漏洞。
推薦用JSON,可讀性好(和序列化相比);可讀可寫(php沒有內(nèi)置函數(shù)來寫ini);通用性好,其他語言也可以比較輕松地訪問。
如果需要較大壓縮,可選用蘋果的binary plist格式,缺點是肉眼不可讀,需要引入CFPropertyList。
一般需求用json或xml就可以了。CFPropertyList也可以用來寫入或解析xml
serialize
必須是這個方式,因為很簡單,只需要序列化就可以了。相對于josn會更方便(如果你是在PHP項目中用的話,而無需其他非PHP項目下使用)推薦serialize。
還是用json吧??勺x性強。體積小。解析速度快。跨語言。
XML雖然也擁有強大的可讀性。但是比起JSON來說,太過龐大,解析速度也是問題。
YAML可讀性一般,較復(fù)雜的內(nèi)容肉眼看起來那就是一堆天書了。但毋庸置疑文件體積將是最小的。
除var_export外。你需要考慮文件直接被瀏覽器打開的問題。
最終還是力薦JSON,json_encode($content,15) 。推薦使用第二個參數(shù)。json_decode($data,true)可輕易的將object轉(zhuǎn)換為array類型。方便操作。