Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не могу придумать, как организовать конфиг (подробности внутри)
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Не могу придумать, как организовать конфиг (подробности внутри)

Страниц (1): [1]
 

1. SkaN - 18 Июня, 2012 - 11:47:56 - перейти к сообщению
Мечусь между двумя вариантами: просто вложенные массивы или XML файл. Из требований: нужна возможность распихивать значения по категориям с возможностью бесконечной вложенности. Вот так бы выглядел XML файл:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <database type="class">
  3.     <server type="entry">localhost</server>
  4.     <login type="entry">root</login>
  5.     <password type="entry">******</password>
  6.     <db type="entry">invicms</db>
  7. </database>
  8. <plugins type="class">
  9.     <inviBlog type="class">
  10.         <database type="class">
  11.             <table_prefix type="entry">blog_</table_prefix>
  12.         </database>
  13.     </inviBlog>
  14. </plugins>

А вложенные массивы выглядели бы примерно так:
PHP:
скопировать код в буфер обмена
  1. $config = array(
  2.     "database" => array(
  3.         "server" => "localhost",
  4.         "login" => "root",
  5.         "password" => "******",
  6.         "db" => "invicms"
  7.     ),
  8.     "plugins" => array(
  9.         "blog" => array(
  10.             "database" => array(
  11.                 "table_prefix" => "blog_"
  12.             )
  13.         )
  14.     )
  15. );


Такой вот примерчик. В принципе, намного проще было бы сделать просто вложенные массивы, но это не красиво. Что сможете посоветовать, может у кого-нибудь другие варианты есть?
2. Данил_123 - 18 Июня, 2012 - 11:56:30 - перейти к сообщению
красивей бы смотрелся *.ini файл
3. Мелкий - 18 Июня, 2012 - 12:02:11 - перейти к сообщению
На мой взгляд массивы наоборот лаконичнее и красивее.
JSON ещё можно взять.
(Добавление)
Данил_123, а как в ini вложенные массивы любого уровня выглядят? По-моему, красивы они только на 1 и 2 уровнях. Зато очень быстрые.
4. SkaN - 18 Июня, 2012 - 12:04:26 - перейти к сообщению
Мелкий пишет:
JSON ещё можно взять.

Насчет JSON я думал, но он скорее для общения между браузером и сервером, в нем было бы нехорошо хранить конфиг.
Данил_123 пишет:
красивей бы смотрелся *.ini файл

А в нем вложенность можно реализовать?
(Добавление)
О! У меня еще красивее вариант родился:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class Config {
  3.     public static $database = array(
  4.         "server" => "localhost",
  5.         "login" => "root",
  6.         "password" => "q24u12e19rt94i",
  7.         "db" => "invicms"
  8.     );
  9.     public static $plugins = array(
  10.         "blog" => array(
  11.             "integrated" => false,
  12.             "database" => array(
  13.                 "table_prefix" => "blog_"
  14.             )
  15.         )
  16.     );
  17. }
  18. ?>
5. Мелкий - 18 Июня, 2012 - 12:18:08 - перейти к сообщению
SkaN пишет:
в нем было бы нехорошо хранить конфиг.

А по мне куда опрятнее, чем XML (именно который, вообще-то, для аякса и использовался до появления JSON, неслучайно ведь xmlhttprequest):
CODE (json):
скопировать код в буфер обмена
  1. {
  2. "database":{
  3.         "server":"localhost",
  4.         "login":"root",
  5.         "password":"******",
  6.         "db":"invicms"
  7.         },
  8. "plugins":{
  9.         "blog":{
  10.                 "database":{
  11.                         "table_prefix":"blog_"
  12.                         }
  13.                 }
  14.         }
  15. }
6. DlTA - 18 Июня, 2012 - 12:34:03 - перейти к сообщению
c json начнутся лаги когда кодировка не utf-8 а текст в кирилице
7. SkaN - 18 Июня, 2012 - 12:37:12 - перейти к сообщению
Спасибо всем за старания и можговую активность, но я решил остановиться на своем последнем варианте (класс Config)
8. caballero - 18 Июня, 2012 - 13:07:57 - перейти к сообщению
Цитата:
c json начнутся лаги когда кодировка не utf-8 а текст в кирилице

json всегда в UTF8 и никаких проблем с кирилицей в этом случае как раз нет.
9. Boom2 - 19 Июня, 2012 - 12:25:09 - перейти к сообщению
всем спасибо))) помогли)
10. Viper - 19 Июня, 2012 - 13:28:00 - перейти к сообщению
SkaN А если конфиг ооочень большой ну пару метров к примеру. Что будет быстрее ворочаться?
1. Класс
2. xml
3. json

И что будет быстрее обрабатываться и удобней?

PS! Хотя судя по тому что автор привел класс в котором хранить, то что обычно там не хранят, то понимания про структурированные данные у него нет.
11. caballero - 19 Июня, 2012 - 13:37:37 - перейти к сообщению
Viper пишет:
А если конфиг ооочень большой ну пару метров к примеру

это уже не конфиг. Это уже база данных.

Цитата:
И что будет быстрее обрабатываться и удобней?

очевидно что клас или массив в PHP/
12. Viper - 19 Июня, 2012 - 16:16:48 - перейти к сообщению
caballero пишет:
это уже не конфиг. Это уже база данных.
и смысл в этом? Да ещё и в статиках? Не проще ли в одном поле хранить json-массив.

caballero пишет:
очевидно что клас или массив в PHP
класс удобней? Спорно. Очень спорно.

 

Powered by ExBB FM 1.0 RC1