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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу придумать, как организовать конфиг (подробности внутри)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
SkaN
Отправлено: 18 Июня, 2012 - 11:47:56
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Мечусь между двумя вариантами: просто вложенные массивы или 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. );


Такой вот примерчик. В принципе, намного проще было бы сделать просто вложенные массивы, но это не красиво. Что сможете посоветовать, может у кого-нибудь другие варианты есть?
 
 Top
Данил_123
Отправлено: 18 Июня, 2012 - 11:56:30
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




красивей бы смотрелся *.ini файл


-----
http://mysitecost.ru
 
 Top
Мелкий Супермодератор
Отправлено: 18 Июня, 2012 - 12:02:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




На мой взгляд массивы наоборот лаконичнее и красивее.
JSON ещё можно взять.
(Добавление)
Данил_123, а как в ini вложенные массивы любого уровня выглядят? По-моему, красивы они только на 1 и 2 уровнях. Зато очень быстрые.


-----
PostgreSQL DBA
 
 Top
SkaN
Отправлено: 18 Июня, 2012 - 12:04:26
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Мелкий пишет:
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. ?>
 
 Top
Мелкий Супермодератор
Отправлено: 18 Июня, 2012 - 12:18:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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. }


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 18 Июня, 2012 - 12:34:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




c json начнутся лаги когда кодировка не utf-8 а текст в кирилице
 
 Top
SkaN
Отправлено: 18 Июня, 2012 - 12:37:12
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Спасибо всем за старания и можговую активность, но я решил остановиться на своем последнем варианте (класс Config)
 
 Top
caballero
Отправлено: 18 Июня, 2012 - 13:07:57
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
c json начнутся лаги когда кодировка не utf-8 а текст в кирилице

json всегда в UTF8 и никаких проблем с кирилицей в этом случае как раз нет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Boom2
Отправлено: 19 Июня, 2012 - 12:25:09
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




всем спасибо))) помогли)
 
 Top
Viper
Отправлено: 19 Июня, 2012 - 13:28:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




SkaN А если конфиг ооочень большой ну пару метров к примеру. Что будет быстрее ворочаться?
1. Класс
2. xml
3. json

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

PS! Хотя судя по тому что автор привел класс в котором хранить, то что обычно там не хранят, то понимания про структурированные данные у него нет.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
caballero
Отправлено: 19 Июня, 2012 - 13:37:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Viper пишет:
А если конфиг ооочень большой ну пару метров к примеру

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

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

очевидно что клас или массив в PHP/


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Viper
Отправлено: 19 Июня, 2012 - 16:16:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




caballero пишет:
это уже не конфиг. Это уже база данных.
и смысл в этом? Да ещё и в статиках? Не проще ли в одном поле хранить json-массив.

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


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB