Tôi cần định dạng tệp cấu hình tốt. Tôi có kế hoạch đưa vào lược đồ bảng. Giống như symfony, ruby on rail, vv Định dạng file tốt nhất cho file cấu hình là gì? Yaml hoặc tệp mã hóa XML hoặc JSON? Cái nào là tốt nhất cho mục đích này?Định dạng tệp tốt nhất cho tệp cấu hình là gì?
Trả lời
Như những người khác đã nêu, bạn có vô số tùy chọn. Chỉ cần không phát minh ra (ví dụ: viết phân tích cú pháp) một điều như vậy cho mình trừ khi bạn có một lý do thực sự, thực sự tốt để làm như vậy (không thể nghĩ ra bất kỳ).Chỉ cần đánh giá các lựa chọn của bạn:
- Bạn cần phải truy cập vào dữ liệu này bất cứ nơi nào bên ngoài ứng dụng của tôi (với ngôn ngữ khác)
- Bạn có muốn sử dụng (hoặc chính bạn) để có thể chỉnh sửa các tập tin sử dụng một trình soạn thảo văn bản đơn giản
- bạn có cần tương thích ngược với các phiên bản cũ của ngôn ngữ được sử dụng
Ví dụ, PHP cung cấp serialize rất dễ dàng() và unserialize() chức năng. Tuy nhiên, định dạng này không dễ dàng đọc được/có thể chỉnh sửa được bởi con người (XML cũng có thể khó đọc, nhưng không khó như định dạng PHP. Mô đun pickle của Python thậm chí còn tồi tệ hơn.). Nếu bạn cần truy cập dữ liệu bằng các ngôn ngữ khác thì đây là một lựa chọn không tốt. Và suy nghĩ về những người khác - Gần đây tôi đã từng phân tích cú pháp dữ liệu tuần tự hóa PHP từ dự án Horde trong một dự án python của tôi! JSON là một lựa chọn tốt hơn nhiều bởi vì nó có thể đọc được (nếu nó được in đẹp, không phải ở dạng nén!), Ngôn ngữ chính có thể chỉnh sửa và mọi ngôn ngữ chính đều hỗ trợ JSON ngày nay. Tuy nhiên, bạn sẽ mất khả năng tương thích ngược, ví dụ: với python, JSON yêu cầu phiên bản 2.6+.
Tôi có vấn đề với một phần của câu trả lời: XML không dễ đọc/chỉnh sửa được bằng con người như thế nào? Đó là một trong những lợi thế lớn của nó. (Đó là chi tiết hơn JSON, và không có gì sai với JSON) – ViennaMike
Vâng, bạn đang phải ở chỗ nó dễ đọc hơn nhiều so với định dạng tuần tự hóa của PHP hoặc dưa chua. Nhưng nó cũng cực kỳ tiết tấu, mà tôi thấy mất tập trung khi đọc và cồng kềnh khi viết. Có một loại phần mềm toàn bộ được gọi là "biên tập viên XML" vì một lý do;) – c089
Tôi đã thay đổi câu trả lời để đọc "không dễ dàng". – c089
Bạn dự định đưa gì vào đó?
Bạn có vô số lựa chọn:
- XML với các thẻ tùy chỉnh
- Cặp khóa-giá trị gia tăng trên mỗi dòng mới
- SQLite?
Tôi không khuyên bạn nên sử dụng SQLite làm cấu hình vì bạn sẽ cần một công cụ máy khách SQLite để thiết lập ứng dụng của bạn và bạn cũng cần phải làm quen với các truy vấn SQL. – RaYell
*.ini
nên được khá tốt cho điều đó
[MyApp]
var1 = "foo"
var2 = "bar"
[MyPlugin]
var1 = "qwe"
Bạn có thể dễ dàng đọc nó bằng cách sử parse_ini_file()
$config = parse_ini_file('/path/to/config/file', true);
echo $config['MyApp']['var2'];
Câu trả lời hay. Đặc biệt nếu dài hạn phạm vi ngôn ngữ vẫn là PHP. Tôi sử dụng tập tin .ini tất cả các thời gian như là "đòn bẩy và núm điều khiển" của tôi trong các ứng dụng của tôi. – pimbrouwers
Ini có hỗ trợ nhiều chuỗi không? – starbeamrainbowlabs
Joomla gần đây đã chuyển từ tệp ini sang tệp được mã hóa JSON. Mã hóa và giải mã json bằng cách sử dụng json_encode()
và json_decode()
hoạt động tốt hơn việc đọc và ghi các tệp ini.
Có một nhược điểm tuy nhiên: json không dễ đọc cho con người. Bạn cần sử dụng tập lệnh php để mã hóa tệp cấu hình của mình. Bạn có thể sử dụng giải pháp này tốt khi bạn muốn viết cấu hình của mình trong phần quản trị viên của trang web.
Tôi có thể nói JSON khá nhiều người có thể đọc được (trái ngược với định dạng tuần tự hóa chuẩn của PHP). –
JSON là một lựa chọn tốt, theo ý kiến của tôi. Bạn có thể xác định lược đồ cơ sở dữ liệu của mình như sau:
{
table1: {
id: {
type:"int",
autoincrement:true
},
some_field: {
type:"string",
}
},
table2: { // etc
}
}
Sau đó chỉ cần sử dụng json_decode để biến điều này thành mảng PHP.
ví dụ:
$tables = json_decode($json_text);
foreach ($tables as $tablename => $t) {
foreach ($t as $fieldname => $field) {
echo "Table {$tablename} has a record called {$fieldname}";
}
}
này sẽ in: Table table1 has a record called id Table table1 has a record called some_field
JSON là dễ dàng hơn để làm việc với hơn XML trong quan điểm của tôi, và json_encode/giải mã rất nhanh nên có rất ít chi phí. Theo tôi, nó cũng dễ đọc hơn XML và đối phó tốt hơn với các cấu trúc dữ liệu phức tạp hơn các tệp INI. Một số người thích YAML, nhưng thực sự không có nhiều khác biệt về cú pháp.
sở thích của tôi là
- cũng ghi tập tin php
- cơ sở dữ liệu cho cấu hình cụ thể sử dụng
giống như wordpress và vô số các ứng dụng php khác sử dụng
Các chàng trai đã thực sự đưa cho bạn câu trả lời tốt rồi. Cá nhân tôi thích tệp .ini bên ngoài gốc tài liệu của bạn. Ngoài ra hãy chắc chắn (nếu bạn đang ở trên một máy chủ lưu trữ Linux env) rằng tập tin của bạn chỉ có thể đọc được bởi máy chủ web của bạn và không thể ghi.
Sau đó bạn có thể phân tích cú pháp tệp INI và sử dụng các cài đặt cấu hình của bạn như thế. (điều này là nếu bạn đang sử dụng một ngôn ngữ như PHP hay như vậy, JavaScript ect sẽ không hoạt động tại đây.)
Nhưng nó giống như họ đã nói. Tất cả phụ thuộc vào dữ liệu bạn muốn có trong tập tin cấu hình của bạn và những gì bạn muốn làm với nó.
Kính trọng Conrad c '',)
- 1. Định dạng tệp cấu hình
- 2. Thực hành tốt nhất cho vị trí của tệp cấu hình ứng dụng Java là gì?
- 3. Phương pháp pythonic nhất để chỉ định tệp cấu hình là gì?
- 4. Định cấu hình tên tệp cho PHPUnit
- 5. Thực tiễn tốt nhất cho cấu trúc tệp tùy chỉnh
- 6. Đang cố gắng đọc tệp .trace Xcode Instruments. Định dạng tệp của tệp .trace là gì?
- 7. Định dạng tốt nhất để sử dụng hình ảnh (png, jpg) trong iOS là gì?
- 8. Tệp cấu hình không được định dạng đúng XML # 2
- 9. Cách tốt nhất để kiểm tra tệp để xem tệp zip của nó là gì?
- 10. Thư viện tệp cấu hình tốt cho c thats not xml (tốt nhất là có ràng buộc python)?
- 11. Định dạng tệp ảnh minh họa iTunes là gì?
- 12. Quản lý tệp Xcode. Thực hành tốt nhất là gì?
- 13. Cách tốt nhất để có svn: eol-style = native cho các tệp văn bản theo mặc định là gì?
- 14. Định cấu hình Apache cho các tệp tải lên lớn
- 15. cách tốt nhất để có kích thước tệp là gì?
- 16. Mô-đun Perl tốt nhất cho cấu hình phân cấp và kế thừa là gì?
- 17. Tự mô tả định dạng tệp cho hình ảnh gigapixel?
- 18. log4net - định cấu hình bằng nhiều tệp cấu hình
- 19. Định dạng tệp 3D cho trò chơi
- 20. Plugin miễn phí tốt nhất cho Eclipse cho phép định dạng/thụt lề/dọn dẹp mã JSP là gì?
- 21. Định cấu hình tệp cho các hội đồng trong GAC
- 22. Chỉ định tệp cấu hình tùy chỉnh cho CKEditor
- 23. Mẹo của bạn để thực hành tốt nhất cho cấu trúc ứng dụng web là gì?
- 24. Định dạng dấu thời gian tốt nhất cho CSV/Excel?
- 25. Cách tốt nhất để định dạng nguồn LaTeX cho Kindle là gì?
- 26. Định dạng bảng mysql tốt nhất cho tải chèn cao là gì?
- 27. Tệp cấu hình dưới dạng tài nguyên được nhúng
- 28. Thực hành tốt nhất cho tệp typedefs
- 29. Cấu trúc của tệp MIDI là gì?
- 30. Tệp cấu hình trong AngularJS
Bạn biết rằng nếu bạn chấp nhận nhiều câu hỏi hơn, bạn nhận được nhiều đại diện hơn, phải không? –