![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Win MK 32 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
У меня есть класс обработки ошибок, статические методы которые могут выводить ошибку в удобном для разработчика виде на страницу или на почту. Далее в коде я объявляю класс для работы с почтой.
И тут появляется делемма. Мне надо в первом классе (логирования) использовать возможности работы с почтой из другого класса. А в классе по работе с почтой - выводить ошибку через класс обработки ошибок. Решил, что было бы здорово переобъявить первый класс. Упрощенно говоря так:
Но вот беда, так не выходит. Расскажите пожалуйста, как мне "пересоздать" класс? Добавлено через 12 минут и 33 секунды Нашел способ. Но может есть что-то более логичное?
http://ru.php.net/manual/ru/function.class...method-copy.php |
||||
|
|||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
вы убили весь смысл ооп :(
|
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
угу более логичным будет наследование одного класса от другого или инкапсулирования одного класса в другом +1 Win MK 32, прежде чем использовать ООП хорошо бы сначало почитать что нибудь толковое, про то как это работает вообще |
|||
|
||||
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Читал. Все понятно, но не понятко в каких случаях как поступать. Что делать?
Добавлено через 13 минут и 30 секунд Привидите пожалуйста пример, как в этом случае можно поступить? С наследованием вроде бы понятно. Жаль я о нем забыл напрочь. |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Но вообще забудьте ООП еще на годик, вы его не используете. Класс — просто оболочка для функций у вас. Добавлено @ 22:11
крайне сомневаюсь. Это сообщение отредактировал(а) gta4kv - 2.3.2009, 22:15 |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
да нет, то что читал и понял - это нормальное явление. однако понимания смысла (прочувствовать магию ООП) ещё не получилось
а раз так, то всё же лучше им не пользоваться |
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
||||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| Win MK 32 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Вы правы. Но я не знаю как быть. Я в общем-то уже год занимаюсь PHP. Свою первую CMS стал писать где-то месяца два назад. И вот только только начал ООП добавлсять. Но ничего не могу с собой поделать, пока это как "подсластитель для функций". А что мне делать? Год еще тянуть - не вижу смысл. Надо двигаться. Фраза "ООП не всем дано" меня пугает. Чтож мне теперь закопать себя в землю, что я пока не понял? Я упорный и научусь если буду знать как...! =) |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Win MK 32, если ты считаешь что уже достаточно знаешь PHP наивный раб, то почитай книгу чисто про ООП в PHP5. (именно в PHP, ибо язык умеет гораздо меньше в плане ООП чем, например, Java)
А откуда у тебя тут $USER берётся? ;-) Примерно вот так:
Это сообщение отредактировал(а) gta4kv - 5.3.2009, 10:07 |
||||
|
|||||
| Win MK 32 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 492 Регистрация: 15.7.2002 Репутация: нет Всего: нет |
Понятия не имею. Вроде читал две книги по PHP. Я могу про себя сказать, как иногда говорят про англоучащихся: "На PHP пишу, пользуясь словарем(мануалами)". То есть открываю для себя время от время новое (время идет, в PHP куча нового появляется). Запросто может быть такое, что я какие-то модные вещи не знаю gzip например не умею юзать или кэш. Но тут уж всего не упомнишь.
Классы почты и логирования ошибок я инклюжу уонс в индекс пхп аж после проверки авторизации. Поэтому $ЮЗЕР - это массив юзера. Он не существует, если не существует авторизации.
Да, у меня есть массив $LANG, он инклюдится тоже в начале.
Да, тут будет функционал обрамления тегами <pre>, умирания скрипта после вывода etc. А также запрета вывода вывода элементов массива с заданными ключами (дабы исключить случай вывода конфиденциальной информации. Боюсь привиденная вами архитектура не совсем то, что я имел в виду. (тем не мене спасибо что написали ее, может быть у меня не верные цели). Мой замысел таков: в любом месте кода я должен мочь включить любой метод любого класса: 1) email::admin Отправить почту админу (в случае ошибки происходит логирование действия (класс loging::[$LANG['DEFAULT_METHOD']]) - типа того - это я уже на ходу придумал про дефолт метод. 2) email::user Отправить почту главному герою (юзеру, который загружает страницу и имеет авторизацию) (ошибка? значит логирование!) 3) email::id Отправить почту юзеру с id (тоже...) 4) email::mail ну а это базовая функция (тоже...) 5) email::htmlmail это базовая функция для отправки почты в формате HTML (тоже...) 6) loging::write логирование в виде вывода на страницу - проще говоря 7) loging::email логирование в виде отправки на мыло админу-вебмастеру Как видно 1-5 использует 6и7; 7 использует 4и5. Нормльный замысел? Добавлено через 3 минуты и 32 секунды Рекурсия? |
||||||
|
|||||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Ну, начнем с того что $LANG не будет доступен в классе. (см. область видимости)
т.е будет разумнее 1) отказаться от статики 2) сделать singleton (хотя если у вас не большой скрипт, то лучше просто добавить метод getInstance в нужный класс (см. класс singleton )) 3) сделать типа init(), и передавать ему $LANG:
Это сообщение отредактировал(а) gta4kv - 7.3.2009, 07:44 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |