Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Бу: ООП в bash, дополнение

Дописал немного «Бу», библиотеку ООП для «Баша», о которой я рассказывал недавно. Прошлая версия не умела работать напрямую (не из методов, снаружи) со свойствами. Новая умеет.

# … пример из предыдущего поста, дополненный

Dog.New dog # создаём экземпляр «собаки»
$dog.cnt =100 # записываем в свойство «cnt» значение «100», обратите внимание на пробел перед «равно»

cnt="$($dog.cnt)" # чтение значения из свойства

Помимо этого, появилась возможность уничтожить объект (все ссылки на него становятся недействительными, их надо очистить вручную, а так же автоматический сборщик мусора, который лучше не включать (довольно заметно тормозит), но зато он уничтожает объекты сам, когда все переменные и свойства других объектов, указывающие на него, исчезают:

@Destroy $dog # yничтожаем объект, в $dog теперь мусор

Dog.New dog # опять создаём «собаку»
unset dog # удаляем ссылку
@Class.gc # вызов сборщика вручную

@Class.gc.on # включаем тормоза и автоматический сборщик мусора

Dog.New dog # и снова создаём «собаку»
dog2="$dog" # ссылка на тот же экземпляр «собаки»
unset dog

echo Объект ещё существует, осталась одна ссылка

unset dog2

echo Объекта уже нет

Кстати, при уничтожении объекта любым из этих способов вызывается деструктор (метод «__destruct»), если он есть, конечно.