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 » » Объектно-ориентированное программирование » Наследование коррекции времени (пояса)

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

1. Roni - 19 Декабря, 2011 - 06:36:41 - перейти к сообщению
Цель иметь некую глобальную переменную $usertimec в которой будет хранится коррекция по времени, часовому поясу. Чтобы при выводе добавлять ее к time().

1. Стоит ли делать как бы главный класс от которого будут наследовать остальные, и в каждом вызывать конструктор родителя, в котором высчитывает поправка по времени
2. Если в Main классе в конструкторе:
$this->db = Database::singleton();
Что лучше: наследовать $db и вызывать родительский конструктор, или в каждом классе вызывать $this->db = Database::singleton() ?


PHP:
скопировать код в буфер обмена
  1. class Database{
  2.         function singleton(){}
  3. }
  4.  
  5. class Main{
  6.         const SRVTIMEC=6;
  7.         private $usertimec;
  8.         private $db;
  9.         function __construct(){
  10.                 //$this->db = Database::singleton();
  11.                 //$this->usertimec=...;
  12.                 $this->timec=3600*(self::SRVTIMEC+$this->usertimec);
  13.  
  14.         }
  15. }
  16.  
  17. class Status extends Main{
  18.         function __construct(){
  19.                 //$this->db = Database::singleton();
  20.                 parent::__construct();
  21.         }
  22. }
2. DeepVarvar - 19 Декабря, 2011 - 07:10:40 - перейти к сообщению
У вас DB уже синглтон, зачем плодить ссылки на него в каждом классе, если он и так везде глобально доступен?
Для меня странно что вы решили всунуть поправку времени в класс DB.
Timezone определяется не для базы данных, а для пользователя - это его персональные настройки.
И никаким боком к базе данных не относится. Это база прогибается корректируя результат расчета со временем.
3. Okula - 19 Декабря, 2011 - 10:35:15 - перейти к сообщению
Было бы целесообразнее указать временной сдвиг в базе (+ час или - час), а уже потом по временным зонам раскидывать.
4. Roni - 19 Декабря, 2011 - 11:22:44 - перейти к сообщению
Okula пишет:
Было бы целесообразнее указать временной сдвиг в базе (+ час или - час), а уже потом по временным зонам раскидывать.
Это как? По UTC/GMT сервер выдает "минус 6"
5. Okula - 19 Декабря, 2011 - 17:06:32 - перейти к сообщению
Например в базу записывать смещение времени в настройках у пользователя, а самому пользователя задавать временную зону уже с указанием его персональных настроек.
PHP:
скопировать код в буфер обмена
  1. // пусть переменная $tzone берётся из базы банных
  2. $tzone = '-3'; // смещение в часах
  3. $timezone = 'Etc/GTM'.$tzone;
  4. $d = new DateTime(date('d-m-Y H:i:s'), new DateTimeZone($timezone));
  5. $dat = $d->format('d-m-Y H:i:s');
  6. var_dump($dat);
  7.  

 

Powered by ExBB FM 1.0 RC1