對php來說將一些配置資訊數組儲存到檔案中是司空見慣的情況,就我目前所知,有以下幾種儲存方法
- 直接用
var_export寫成return array(...);的php代碼,然後讀取的時候用require解析即可。
- 使用
serialize函數序列化一個數組,然後讀取的時候用unserialize還原序列化
- 使用
json_encode序列化一個數組,然後讀取的時候用json_decode還原序列化
- 使用其它的檔案格式,比如
yaml或者ini
有人比較過這幾種方法的優劣嗎?哪種方法更好,或者說它們適用的情境有和不同?
回複內容:
對php來說將一些配置資訊數組儲存到檔案中是司空見慣的情況,就我目前所知,有以下幾種儲存方法
- 直接用
var_export寫成return array(...);的php代碼,然後讀取的時候用require解析即可。
- 使用
serialize函數序列化一個數組,然後讀取的時候用unserialize還原序列化
- 使用
json_encode序列化一個數組,然後讀取的時候用json_decode還原序列化
- 使用其它的檔案格式,比如
yaml或者ini
有人比較過這幾種方法的優劣嗎?哪種方法更好,或者說它們適用的情境有和不同?
如果你的數組是只是給php項目用,使用第一種方法是最好的最方便的,我一直用它
如果你的資料可能不僅僅被php所用,那最好使用通用性更高的json格式了,當然yaml,xml也行,但總歸不如json_encode方便
serialize我還真的很少在儲存數組的時候用到
PS:不好意思剛才沒看到你是說在設定檔的使用。如果是設定檔的話,一定要注意你的php代碼會不會有可能被加密,如果有這種可能性最好是使用json或者yml或者ini等其他格式方便設定檔的修改
我覺得第一種方式不是很好,這樣可能會造成執行任意PHP代碼的漏洞。
推薦用JSON,可讀性好(和序列化相比);可讀可寫(php沒有內建函數來寫ini);通用性好,其他語言也可以比較輕鬆地訪問。
一般來說,用 ini 是最好不過的了(人工可配),其次是serialize(系統自動產生)
我一般都是用JSON,跨平台,而且易閱讀。
如果需要較大壓縮,可選用蘋果的binary plist格式,缺點是肉眼不可讀,需要引入CFPropertyList。
一般需求用json或xml就可以了。CFPropertyList也可以用來寫入或解析xml
如果僅供PHP使用,我還是比較喜歡直接用PHP數組。
serialize
必須是這個方式,因為很簡單,只需要序列化就可以了。相對於josn會更方便(如果你是在PHP項目中用的話,而無需其他非PHP項目下使用)推薦serialize。
還是用json吧。可讀性強。體積小。解析速度快。跨語言。
XML雖然也擁有強大的可讀性。但是比起JSON來說,太過龐大,解析速度也是問題。
YAML可讀性一般,較複雜的內容肉眼看起來那就是一堆天書了。但毋庸置疑檔案體積將是最小的。
除var_export外。你需要考慮檔案直接被瀏覽器開啟的問題。
最終還是力薦JSON,json_encode($content,15) 。推薦使用第二個參數。json_decode($data,true)可輕易的將object轉換為array類型。方便操作。
看需求.