|
2 / 2 / 0
Регистрация: 15.02.2022
Сообщений: 469
|
|||||||||||
Аналог unset в ООП?06.01.2023, 10:49. Показов 3887. Ответов 56
Метки нет (Все метки)
Прочитав доки про деструктор я понял, что деструктор это аналог unset().
Затем, я решил свой код ООП переписать на процедурный стиль. Правильно ли я переписал свой код? И верно ли, что деструктор это аналог unset() ? Решил этот код ООП:
Переписать на процедурный, знаю, что криво написал:
0
|
|||||||||||
| 06.01.2023, 10:49 | |
|
Ответы с готовыми решениями:
56
unset unset
|
|
Невнимательный
|
||||||||||||||||||||||
| 08.01.2023, 12:17 | ||||||||||||||||||||||
![]() например
в порядке обратном созданию объектов Добавлено через 4 минуты unset() это да ))
0
|
||||||||||||||||||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 08.01.2023, 12:18 | |
|
1
|
|
|
Невнимательный
|
||
| 08.01.2023, 12:24 | ||
|
// ... хотя там и насчёт разных SAPI есть моменты ... так-что да надёжнее не полагаться на такое ... если хочется не сильно
0
|
||
|
2 / 2 / 0
Регистрация: 15.02.2022
Сообщений: 469
|
|||
| 08.01.2023, 13:04 [ТС] | |||
|
Jewbacabra
Деструктор вызывается автоматически после уничтожения класса и ничего не делает, верно? Но мы можем вызвать деструктор явно и написать туда инструкции. Добавлено через 4 минуты estic Да я запутался, одни мне говорят, что деструктор вызывается автоматически(неявно) и очищает память. Другие говорят, что деструктор вызывается так же автоматически(неявно) и ничего не делает. Я запутался. Если мы не вызываем деструктор явно, то он вызывается сам и ничего не делает, то какая в этом логика?
0
|
|||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||
| 08.01.2023, 13:17 | |||
|
И если уж цитировать, то до конца
0
|
|||
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|
| 09.01.2023, 08:33 | |
|
1
|
|
|
2 / 2 / 0
Регистрация: 15.02.2022
Сообщений: 469
|
||
| 11.01.2023, 17:52 [ТС] | ||
|
KingdaKa
если мы его не пропишем в классе?
0
|
||
|
-8 / 8 / 0
Регистрация: 31.08.2022
Сообщений: 209
|
||||||
| 11.01.2023, 19:11 | ||||||
0
|
||||||
|
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
|
|||||||
| 18.01.2023, 17:45 | |||||||
0
|
|||||||
|
-8 / 8 / 0
Регистрация: 31.08.2022
Сообщений: 209
|
|
| 19.01.2023, 15:19 | |
|
0
|
|
|
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
|
||
| 19.01.2023, 15:24 | ||
|
0
|
||
|
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
|
|||||||
| 19.01.2023, 15:37 | |||||||
|
1, явным unset() 2. когда завершится скрипт и все объекты будут уничтожены автоматически Добавлено через 3 минуты Пожалуй еще третим способом, например когда объект не сохранен и ипользований временного объекта больше нет
0
|
|||||||
|
-8 / 8 / 0
Регистрация: 31.08.2022
Сообщений: 209
|
|
| 19.01.2023, 15:48 | |
|
0
|
|
|
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
|
||||||||
| 19.01.2023, 16:01 | ||||||||
|
а на такой пример что ответите?
0
|
||||||||
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|
| 19.01.2023, 17:21 | |
|
Vily Vykidnye, когда говорят, что unset освобождает память, это вовсе не означает, что память сразу же возвращается системе. Она может оставаться в резерве, быть повторно использована PHP, возвращена системе после освобождения каких-то смежных областей, чтобы получился один более крупный участок, и т.п.
Добавлено через 9 минут Внутри приложения обычно происходит то же самое, пока не исчерпан первоначально доступный блок памяти.
0
|
|
|
-8 / 8 / 0
Регистрация: 31.08.2022
Сообщений: 209
|
||
| 19.01.2023, 21:14 | ||
|
Phantom-84, что я и указал
![]() изучай
0
|
||
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
||
| 20.01.2023, 00:05 | ||
![]() Сведите оба примера вместе. Сразу будет понятно, что многое зависит от объема переменной. Освобождение небольших переменных PHP вполне может не показывать. Возможно, это какая-то освободившаяся ячейка в таблице переменных. Зато после освобождения объемной переменной может произойти полный откат к предыдущему показателю занятости памяти. Добавлено через 6 минут Кстати, интересный случай, когда сразу большая переменная создается и освобождается. У меня так: 375616 376672 375648 Как видно, почти все откатилось обратно за вычетом 32 байт. Возможно, эти 32 байта - и есть размер ячейки в таблице переменных. В вашем примере с числовой переменной была такая же разница после создания переменной: 400384 400416 Добавлено через 4 минут Еще одно подтверждение моей гипотезы, когда сначала создается и освобождается объемная (строковая) переменная, потом числовая: 376272 377328 376304 376304 376304 Даже после создания числовой переменной показатель не изменился - вполне возможно, что была задействована освободившаяся ранее "грязная" ячейка таблицы переменных.
0
|
||
|
-8 / 8 / 0
Регистрация: 31.08.2022
Сообщений: 209
|
||
| 20.01.2023, 13:28 | ||
![]() в п. 28 дано чётко, как это выглядит, могу продублировать популярнее
0
|
||
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|
| 20.01.2023, 14:30 | |
|
Vily Vykidnye, не хотите замечать элементарные вещи, ваше дело. Делаю последнюю попытку вам объяснить. Во-первых, в моих примерах ПЕРВОНАЧАЛЬНАЯ ПАМЯТЬ замеряется. Во-вторых, посмотрите на его второй пример. Да, он опять скрыл неосвобождение (или неполное освобождение) памяти небольшой, на этот раз строковой, переменной, но зато показал вот это для объемной переменной:
401096 402376 401096 Полный откат. Возможно, не откатился к первоначальному показателю небольшой участок размером, например, 32 байта. Т.е. первоначальный показатель мог быть, например, таким: 401064 Иными словами, в какой-то мере вы тоже правы. Но в общем unset освобождает память, просто PHP может не показывать освобождение небольших участков, о чем я уже писал!
1
|
|
| 20.01.2023, 15:02 | ||||||
|
memory_get_usage() вообще "забавная" штука и нужно понимать, что показывает
![]() Недавно занимался оптимизацией. И так же натолкнулся на поведение, которое на первый взгляд странным показалось ![]() Псевдокод теста
1
|
||||||
| 20.01.2023, 15:02 | |
|
Повсюду unset классы и unset
Сессия восстанавливается после unset Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|