powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Получить список объектов указанного класса, существующих в оперативной памяти...
25 сообщений из 44, страница 1 из 2
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851716
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеющиеся в распоряжении переменные и объекты не содержат ссылок на искомый объект.
Но этот объект нужно найти. Его класс известен. Каким образом в php получить массив ссылок на все объекты указанного класса, созданные (существующие) в оперативной памяти ?
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851732
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искомый объект создаётся тем же самым php-скриптом.
Но изменять код, создающий объект, нельзя.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851750
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача будет решена, если из объекта некоторого класса удастся получить ссылку на родительский объект.
Такое возможно в php ?
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851752
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗадача будет решена, если из объекта некоторого класса удастся получить ссылку на родительский объект.
Вернее, к тому объекту, в котором создан текущий объект.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851819
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
супермассив GLOBALS и instanceof
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851823
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсупермассив GLOBALS и instanceof
Неа. Не то. Кто этот массив будет заполнять ? Менять код искомого класса (а также код, в котором создаётся объект искомого класса) нельзя.

P.S. Всё-таки я решил задачу. Очень красиво. Кто-нибудь смекнёт, как ?
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851827
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Задача будет решена, если из объекта некоторого класса удастся получить ссылку на родительский объект.
Такое возможно в php ?

Что в данном случае есть "родительский объект"? Просто в php нету прототипного наследования, а для классического ООП данное выражение вообще теряет смысл (если я правильно понял).
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851831
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02авторсупермассив GLOBALS и instanceof
Неа. Не то. Кто этот массив будет заполнять ? Менять код искомого класса (а также код, в котором создаётся объект искомого класса) нельзя.

P.S. Всё-таки я решил задачу. Очень красиво. Кто-нибудь смекнёт, как ?

get_defined_vars и get_class заюзал наверное? :) первую никогда не пользовал, но думаю она вернёт как-раз то, что тебе надо (для второй функции) :)
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38851964
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто в данном случае есть "родительский объект"?Текущий код выполняется в методах текущего класса. Так вот, нужно получить доступ к вышестоящему классу, который создал объект текущего класса и который содержит в своих полях ссылку на объект текущего класса.

авторget_defined_vars и get_class заюзал наверное? :)Проверил - get_defined_vars возвращает только те переменные, которые доступны в текущей области видимости. А этот факт делает функцию бесполезной.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852039
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТекущий код выполняется в методах текущего класса. Так вот, нужно получить доступ к вышестоящему классу, который создал объект текущего класса и который содержит в своих полях ссылку на объект текущего класса.Вернее, так: нужно получить доступ к вышестоящему объекту, в методах которого был вызван метод текущего объекта .
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852050
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02, мне вот совершенно не интересно Ваше решение, но это форум. Поделитесь с другими уже.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852080
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,

Моё мнение - ты смухлевал :)
Дело в том, что я вот всё облазил... нету в php возможности установки внешнего хука (без предварительной подготовки самого метода). Также в php нельзя перезаписывать глобальные методы (их можно только переопределить при наследовании).

То есть, не имея возможности изменить или переопределить конструктор нужного класса, или вызывающий его метод - задача нерешаема.

Так что было бы очень интересно услышать твой метод решения задачи (и посмотреть его соответствие условиям :) )
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852085
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в порядке бреда

волшебные константы?
инициация и перехват исключения?

знать бы точно, в каком контексте нужно решить задачу. что доступно а что нет. может ТС чегото недоговорил
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852106
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я правильно понял, то либо никак, либо ТС открыл для себя $this|static|self :)

скорей всего у него статика работает.

или вообще тогда ничего не понятно
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852214
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторволшебные константы?
инициация и перехват исключения?
Нет.

авторлибо ТС открыл для себя $this|static|self :)
Нет
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852220
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: Из метода m1 объекта obj1 вызывается метод m2 объекта obj2. Внутри метода m2 нужно получить ссылку на объект obj1. Класс объекта obj1 известен.
Решение существует. Без всяких извращений и допущений.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852241
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02 Задача: Из метода m1 объекта obj1 вызывается метод m2 объекта obj2. Внутри метода m2 нужно получить ссылку на объект obj1. Класс объекта obj1 известен.
как выше уже озвучила Скаря:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class obj1 {
	public function m1() {
		$m2 = new obj2();
		$m2->m2();
	}
}
//
class obj2 {
	public function m2() {
		$obj = null;
		foreach($GLOBALS as $v) {
			if ($v instanceof obj1) {
				$obj = $v;
				break;
			}
		}
		var_dump( $obj ); // object(obj1)#1 (0) { }
	}
}
//
$m1 = new obj1();
$m1->m1();
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852248
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Cyrax_02 Задача: Из метода m1 объекта obj1 вызывается метод m2 объекта obj2. Внутри метода m2 нужно получить ссылку на объект obj1. Класс объекта obj1 известен.
Решение существует. Без всяких извращений и допущений.debug_backtrace?
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852252
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?debug_backtrace?
скорее всего))
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852260
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uCyrax_02 Задача: Из метода m1 объекта obj1 вызывается метод m2 объекта obj2. Внутри метода m2 нужно получить ссылку на объект obj1. Класс объекта obj1 известен.
как выше уже озвучила Скаря:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class obj1 {
	public function m1() {
		$m2 = new obj2();
		$m2->m2();
	}
}
//
class obj2 {
	public function m2() {
		$obj = null;
		foreach($GLOBALS as $v) {
			if ($v instanceof obj1) {
				$obj = $v;
				break;
			}
		}
		var_dump( $obj ); // object(obj1)#1 (0) { }
	}
}
//
$m1 = new obj1();
$m1->m1();


Массив $GLOBALS содержит только глобальные переменные. А объект obj1 может быть объявлен и внутри другого объекта.
Но даже если и будет объявлен в глобальной области видимости, то невозможно будет определить, какой из найденных объектов вызвал метод m2 (а может быть, и ни один из них).
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852262
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторdebug_backtrace? Именно. debug_backtrace + instanceof .
С версии php 5.1 в возвращаемом функцией массиве появилось поле "object" со ссылкой на объект.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852314
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02авторdebug_backtrace? Именно. debug_backtrace + instanceof .
С версии php 5.1 в возвращаемом функцией массиве появилось поле "object" со ссылкой на объект.

Это не красивое решение ) Использование функции отладки для нормального функционирования системы - неверно.

А вообще могу сказать, что изначально было неправильно спроектировано приложение, раз такой изворот необходим :)

Я соглашусь, что в данном случае это наверное единственное решение (но ещё раз повторю, не красивое.. таким не стоит хвалиться :) )
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852419
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

я даже больше скажу. оно не правильное. мы привязываемся к имени класса вызывающего обьекта. завтра подменят имя класса на другое - на класс-брат, и накроется это всё медным тазом. да и сточки зрения ооп, это не верно. если у нас вызыван метод наш извне, значит это интерфейсный метод у нас, и нас както не должно интересовать кто его вызвал.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852444
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМассив $GLOBALS содержит только глобальные переменные
а паццаны и не знают.
...
Рейтинг: 0 / 0
Получить список объектов указанного класса, существующих в оперативной памяти...
    #38852461
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Массив $GLOBALS содержит только глобальные переменные. А объект obj1 может быть объявлен и внутри другого объекта.
ну я привел код, там объект объявлен как раз внутри метода. что не так то?)
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Получить список объектов указанного класса, существующих в оперативной памяти...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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