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]   

> Описание: хочу сопровождать выполнение класса какой-либо информацией
AmsTaFF
Отправлено: 05 Июня, 2013 - 08:45:10
Post Id


Гость


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


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




Есть вот такой вот метод в классе
PHP:
скопировать код в буфер обмена
  1. public function check(){
  2.         PI::say("Начало проверки кампании");
  3.         PI::sub();
  4.  
  5.         PI::say("Начинаем загружать данные");
  6.         PI::sub();
  7.         $this->getData();
  8.         PI::over();
  9.         PI::say('Загрузка данных окончена');
  10.  
  11.  
  12.         PI::say('Начинаем обработку данных');
  13.         PI::sub();
  14.         $this->processData();
  15.         PI::over();
  16.         PI::say('Обработка данных окончена');
  17.  
  18.  
  19.         PI::say('Начинаем обработку результатов');
  20.         PI::sub();
  21.         $this->makeActionsAfterProcess();
  22.         PI::over();
  23.         PI::say('Обработка результатов окончена');
  24.         PI::over();
  25.  
  26.     }


Из него видно, что я сопровождаю каждый шаг сообщением (это ну очень удобно). Но, мне не хочется привязывать этот метод к классу PI, какой способ лучше применить, чтобы отделить PI от этого метода?

Может есть уже готовые решение и паттерны для этого, чтобы не изобретать велосипед...

(Отредактировано автором: 05 Июня, 2013 - 08:45:54)

 
 Top
avtor.fox
Отправлено: 05 Июня, 2013 - 08:50:55
Post Id



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


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




AmsTaFF, долго думал над Вашим кодом. Что Вас побудило сделать сие? Гораздо удобнее написать класс (велосипед) и отлавливать им любые изменения, а исходя из "ответов" скриптов выводить сообщение. У Вас например, сообщения будут выводиться при любом исходе программы, кроме fatal error.
 
 Top
AmsTaFF
Отправлено: 05 Июня, 2013 - 08:57:51
Post Id


Гость


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


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




Цитата:
Что Вас побудило сделать сие?

побудило то, что мне необходимо было знать что в программе происходит и как именно/какие она достает данные
Цитата:
Гораздо удобнее написать класс (велосипед) и отлавливать им любые изменения, а исходя из "ответов" скриптов выводить сообщение

а подробнее, какой класс?
Цитата:
У Вас например, сообщения будут выводиться при любом исходе программы, кроме fatal error.

именно это мне и нужно
 
 Top
avtor.fox
Отправлено: 05 Июня, 2013 - 09:09:59
Post Id



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


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




AmsTaFF, да хотя бы исключения

AmsTaFF пишет:
именно это мне и нужно

Если программа будет выполнена с ошибкой, у Вас отобразится, что всё прошло хорошо. Вы этого желаете?)
 
 Top
AmsTaFF
Отправлено: 05 Июня, 2013 - 09:12:56
Post Id


Гость


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


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




в итоге я получаю такое:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. Загрузка из БД Кампании [id=3]
  3.         отправка запроса "GetBanners" в YaDI (1)
  4.         отправка запроса "GetCampaignsList" в YaDI (1)
  5.         закончено
  6.  
  7. Начало проверки кампании
  8.         Начинаем загружать данные
  9.                 загружаем goods
  10.                         загружено 9982
  11.                 загружаем баннеры из Яндекс.Директа


Цитата:
AmsTaFF, да хотя бы исключения

не понимаю каким образом исключения помогут в выводе информации?

Цитата:
Если программа будет выполнена с ошибкой, у Вас отобразится, что всё прошло хорошо. Вы этого желаете?)

На все ошибки у меня поставлены исключения, и если что, то выводится вся информацию по этому исключению
 
 Top
avtor.fox
Отправлено: 05 Июня, 2013 - 09:19:04
Post Id



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


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


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




AmsTaFF, ну сударь. Вы привели кусок кода, не сопроводив его должным количеством комментариев.

Исключения помогут в ходе работы программы. Если Вы их используете, то Вам ли этого не знать.

А могут помочь например такие паттерны, как - observer или singleton.
 
 Top
AmsTaFF
Отправлено: 05 Июня, 2013 - 09:42:27
Post Id


Гость


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


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




да, я тоже смотрел в сторону observer, но что-то для сообщений пока не нашел... может буду копать в сторону event'ов
 
 Top
caballero
Отправлено: 05 Июня, 2013 - 09:58:52
Post Id


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


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


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




ну так посмотри в сторону логгирования
готовых логгеров полно


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
AmsTaFF
Отправлено: 05 Июня, 2013 - 10:53:53
Post Id


Гость


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


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




спасибо, насчет логирования я что-то не подумал
 
 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