![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Mushu |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 20.7.2004 Репутация: -2 Всего: -5 |
Всем привет, кто сможет помогите плиз!
Задача состоит в том , какими методами можно узнать кто вызывает метод обьекта из вне. (чето очень загнул) Для наглядности привожу пример
|
|||
|
||||
| Avaj |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 14.7.2008 Где: Владивосток. Репутация: нет Всего: 3 |
Например можно каждому классу и объекту дать какой-нибудь идентификатор.
т.е. классу например можно в качестве идентификатора приписать статический член, ну а объектам например просто строчный идентификатор при создании (конструктор с параметром). Наверно есть более цивилизованный способ в этом вашем PHP, как например в С++ - typeid. Это сообщение отредактировал(а) Avaj - 15.5.2009, 16:12 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
посмотри debug_backtrace.
она возвращает в том числе и имя класса, из которого произошел вызов текущей строки. Добавлено через 1 минуту и 2 секунды но мне кажется, что подобный подход выглядит подозрительно: а не пытается ли автор кода надеть штаны через голову? конечно, если речь не идет об отладке. |
|||
|
||||
| Mushu |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 20.7.2004 Репутация: -2 Всего: -5 |
не пытается, суть в том, что если класс_1 вызывает метод класса_принт то происходит два действия, а если класс_2 вызывает метод класса_принт то должно происходить одно действие ;)
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
а если появится третий объект, то для него метод print будет выполнять четыре действия?
зачем возлагать на получателя команды дополнительную логику? либо вызывай эти одно/два/три действия в тех, кто вызывал метод print, либо реализуй кроме метода print ещё другие методы(навроде, print_with_borders), либо передавай в метод print дополнительные параметры. Твой вариант оооочень сильно похож на здоровенную заплатку, которая может ещё принести головной боли. |
|||
|
||||
![]()
|
| Правила форума "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. |