Создание, жизнь и удаление экземпляра класса, что с памятью?

DpoHro

Новичок
Создание, жизнь и удаление экземпляра класса, что с памятью?

Я, восновном, Сишник там без умения работы с памятью никак.

У меня есть класс, создавать который нужно в цикле

PHP:
for ($i=0;$i<$clCList->GetCount();$i++)
{
  $COMPANY = $clCList->GetAt($i);

  $clFList = new FactorList(); // Вот создание
  ...
}
Собственно где удалять? Что с памятью происходит?
Есть предположение, что переменная хранится в пределах области видимости, то есть только внутри цикла, но пока идет перебор, мы находимся внутри и следовательно происходит перетирание переменной.

Вобщем, просветите как PHP работает с памятью, я может какой мануал не дочитал, про то как экземпляр класса замочить?

unset() ??
 

tashkentchi

Новичок
В ПХП5 объект "мочится", если на него не указывает ни одна ссылка, или когда скрипт завершает работу.

unset уничтожит ссылку на объект.

В вашем случае при каждой итерации цикла предыдущий объект разрушается (конечно, если вы дальше в коде не создаете еще одну ссылку на него).
 

ustas

Элекомист №1
DpoHro
создание и инициализация объекта в php, да и еще в цикле удовольствие довольно дорогое, сравниваю с С разумеется.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ustas, приведи пример того, что в php "дешевле", чем в С, а?

Пока что я с твоим утверждением не согласен, ибо считаю его некорректным. Ведь дорогим удовольствием "в С" сравнительно с PHP оказывается само решение.
 

DpoHro

Новичок
Хм, само создание объекта в С++ это выделение памяти, вызов конструктора и получение указателя на объект.
Синтаксически ничем не отличается, напрягов по созданию и уничтожению объектов никогда не испытывал, думаю все зависит от того насколько сложный конструктор у объекта (именно тут основная потеря времени), а выделение памяти и ее уничтожение никогда не вызывали опасения за процессорное время.
Насколько быстро все это проделывает PHP не знаю, надеюсь расскажете, потому как у меня многоуровневая структура.
В каждом объекте создается массив подобъектов, в подобъектах также создаются массивы подобъектов.
Всего 3 уровня, по объему данных пока не могу сказать сколько их будет, но думаю много.
Следовательно нужно, чтобы код был максимально оптимизирован и по времени выполнения и по объему выделяемой памяти и по количеству запросов к БД (так как каждый объект содержит информацию из БД).
Сама структура повторяет структуру данных БД.

Спасибо за ответы!
 

DpoHro

Новичок
Я имел ввиду C++, даже если это совсем важно VC++, но обращаю внимания, суть вопроса именно в PHP, а не в сравнении PHP с другими языками. Это то что меня реально интересует.
 
DpoHro
Есть предложение поставить, например, XDebug, и самостоятельно во всем разобраться.
 

DpoHro

Новичок
Воспользуюсь советом, просто не имел чести пока общаться с этой программой.
 

cDLEON

Онанист РНРСlub
mishco
[offtop]
Ыыы, всё таки ты поставил его себе =))
[/offtop]
 
cDLEON
Ога, поставил, но клиент так ни один и не прикрутил. Даже тот что с ним в комплекте, тупак я :'(.
 

Stierus

Новичок
http://www.williamspublishing.com/Books/5-8459-0925-2.html
почитай эту книгу (в частности раздел Устройство PHP и Zend Engine ) ... много полезного для себя вынесешь
 

ustas

Элекомист №1
mishco
выше пост, в частности рекомендуемый раздел поможет тебе не делать едких замечаний.
 

Alexandre

PHPПенсионер
Насколько быстро все это проделывает PHP не знаю, надеюсь расскажете, потому как у меня многоуровневая структура.
В каждом объекте создается массив подобъектов, в подобъектах также создаются массивы подобъектов
в РНР каждый объект представляет пару (возможно и больше) хештаблиц. Каждый массив - это хештаблица. Сборки мусора нет. Далее делаем вывод, что будет, если перегружать объектами скрипт. Но лучше об этом не думать - РНР за тебя сам освободит всю память.
 

Frol

Новичок
в РНР каждый объект представляет пару (возможно и больше) хештаблиц. Каждый массив - это хештаблица. Сборки мусора нет. Далее делаем вывод, что будет, если перегружать объектами скрипт.
список функций -- "хештаблица". переменные тоже.
вывод делать страшно.
 

Alexandre

PHPПенсионер
мне сама конструкция не нравится
Код:
for ($i=0;$i<$clCList->GetCount();$i++) 
{ 
  $COMPANY = $clCList->GetAt($i); 
  $clFList = new FactorList(); // Вот создание 
  ... 
}
неужеле по другому нельзя? что там делается с этим $clFList ?

да впрочем... не все-ли равно :D
 

DpoHro

Новичок
Alexandre
Если в глобаьном смысле - этот класс предназначен для математических, так скть, расчетов по компаниям, ничего боле...

Если в данной конструкции PHP убъет память в конце цикла, перед началом новой итерации, то это меня устраивает!

Спасибо всем, Stierus за книгу, обязательно прочту, остальным за ответы.
 
Сверху