Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Создание класса, набор свойств которого динамически берётся из БД / 8 сообщений из 8, страница 1 из 1
21.11.2011, 03:25:45
    #37536094
CraC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
Исходная ситуация:
Есть некий не слишком простой сайт, в котором параметры конфигурации задаются как свойства класса _config_, следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 class  _config_
{
	 public  static $db_socket	=  null ;
	 public  static $db_server	= 'localhost';
	 public  static $db_port		= '3306';
	 public  static $db_username	= 'user';
	 public  static $db_password	= 'password';
	 public  static $db_database	= 'db_name';

	// ещё много чего
}

Задача:
С целью упрощения работы с конфигурацией, например, в части адресов электронной почты для всяких уведомлений, решено хранить часть этих параметров в БД, имея возможность из CMS (свой велосипед, но здесь это не важно) изменять их значения. Если возникнет необходимость добавить новый параметр конфигурации, его будет логичнее вписать только в БД, не дублируя больше нигде.

Проблема:
Поскольку уже существующие параметры конфигурации задействованы много где, и менять способ получения их значений во всём коде не хочется, приходит решение существующий класс переименовать, а новый класс с именем _config_ от него наследовать, попутно добавив туда свойства, полученные из БД. Собственно, проблема в этом "попутно добавив". Если забыть про eval, то как это можно реализовать?
...
Рейтинг: 0 / 0
21.11.2011, 08:02:04
    #37536155
sxq
sxq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
http://ru.php.net/manual/ru/language.oop5.overloading.php - перегрузка
http://ru.php.net/manual/ru/book.classkit.php - расширение языка, которое создает все это, правда ни разу не видел что бы оно было установлено у какого- либо хостера.
...
Рейтинг: 0 / 0
21.11.2011, 08:28:55
    #37536160
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
CraC,

чуток не догнал....
Код: plaintext
$config =  mysql_fetch_object ($res,'_config_'); 
не то?
...
Рейтинг: 0 / 0
21.11.2011, 23:56:28
    #37537794
CraC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
sxq,

Похоже что такая, кхм, своеобразная перегрузка как раз решит мою проблему. Большое спасибо!

ClassKit посмотрел по диагонали. Там почему-то манипуляции происходят только с методами, а не со свойствами. И это расширение пока что производит впечатление экспериментального. И "перегрузкой" (в кавычках, да) у меня сейчас решается проще.
...
Рейтинг: 0 / 0
21.11.2011, 23:58:39
    #37537796
CraC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
Ренат, благодарен за Ваш ответ. В конкретно моей ситуации этой функцией обойтись не получится, но вообще буду иметь ввиду.
...
Рейтинг: 0 / 0
03.08.2012, 10:45:31
    #37903039
tarasnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
CraC, вам удалось решить проблему?
...
Рейтинг: 0 / 0
07.08.2012, 20:50:06
    #37907907
tarasnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
отвечу сам себе (вдруг пригодится), не пробовал, но может в тему: PDO::FETCH_CLASS
...
Рейтинг: 0 / 0
10.08.2012, 09:35:59
    #37911647
nbaksalyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Создание класса, набор свойств которого динамически берётся из БД
Если кому решение еще нужно - то, по идее, вот это должно сработать:
Код: php
1.
2.
3.
4.
5.
// ...
$configData = mysql_fetch_assoc(); 
foreach ($configData as $key => $value) {
    _config_::$$key = $value;
}
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Создание класса, набор свойств которого динамически берётся из БД / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]