Конструкторы и деструкторы php
PHP конструктор и деструктор
В этой части учебника будет рассказываться про конструктор и деструктор классов или на английском construct и destruct, это пожалуй самый важный элемент в классе, в PHP 7, также тоже есть.
Конструктор:
Это предопределённый метод, который вызывается во время создания объекта класса, вы можете, к примеру, выводить на экран надпись или свойство.
Важно:
Конструктор и деструкторr они вызываются автоматически, при создание и удаление объекта.
Также конструкторы созданы для того, что бы давать значение свойствам, для этого в круглых скобках конструктора пишем параметры, как у функции, в самом конструкторе, свойствам присваиваем эти параметры.
Как видите, внутри конструктора могут работать и методы, мы туда поместили метод, который выводит на экран имя и фамилию, он тоже будет запускаться во время объявления объекта, вот результат программы.
Как видите всё работает.
В принципе, на этом этапе учебника про конструкторы особо не чего сказать, ещё подробнее о них будет в других частях про ООП.
Деструктор:
Про него практически не чего говорить, кроме того, что он удаляет весь объект, после того как закончится скрипт, или не будет переменных (Ссылки) которые ссылаются на него.
Как видите, после того как программа закончила работу, в конце срабатывает деструктор, он удаляет объект и выводит на экран эту надпись.
Деструктор нужно использовать, так как, объект хранится в оперативной памяти, а переменная, это только ссылка на объект в оперативной памяти, и если вы удалите переменную, то объект от этого, не пропадёт, так там и останется, поэтому всегда в классе нужно использовать деструктор.
Вывод:
Как видите это не большая статья, но в ней рассматривается одна из важнейших тем в ООП, это конструктор и деструктор или на английском construct и destruct в PHP 7, Если вам что то не понятно, то это тема подробнее будет затрагиваться в следующих частях.
Объектно-ориентированное программирование в PHP. Конструкторы и деструкторы
В сегодняшней статье мы поговорим об конструкторах и деструкторах в ООП.
Конструкторы
Очень часто при создании экземпляра объекта на основе класса требуется выполнить какие-то базовые настройки, будь то установка свойств объекта или же открытие файлов конфигурации, да мало ли что еще. Именно для этих целей в ООП и существует метод конструктор. В версиях до PHP 5 имя метода конструктора совпадало с именем класса к которому он относится, а начиная с версии PHP 5 имя метода конструктора необходимо называть __construct() (это 2 подчеркивания перед словом construct()).
Конструктор автоматически вызывается при создании объекта. Давайте попробуем создать класс, который будет содержать метод __construct():
MyClass содержит простой конструктор, который выводит сообщения с помощью оператора echo. В последней сточке кода мы создаем экземпляр класса MyClass() и когда это происходит PHP автоматически вызывает конструктор и на экран выводится сообщение «Я только что был создан!»
Давайте теперь посмотрим еще на один пример, в котором при создании объекта происходит инициализации его свойств:
Если запустить этот скрипт, то на экран будет выведена следующая информация:
Далее мы создаем новый объект Product и передаем в нем информацию о товаре. Конструктор принимает эти данные и устанавливает соответствующие свойства объекта. И наконец вызывается метод getProduct(), который выводит на экран сохраненные значения свойств объекта.
Деструкторы
Подобно конструкторам в PHP существуют деструкторы, которые вызываются строго перед тем, как объект удаляется из памяти.
Это может понадобится, например, для удалению объектов, зависящих от удаляемого объекта, закрытие соединения с базой данных или файлов.
Примечание: PHP автоматически удаляет объект из памяти, когда не остается ни одной переменной, указывающей на него. Например, если вы создадите новый объект и сохраните его в переменной $myObject, а затем удалите ее с помощью метода unset($myObject), то сам объект также удалится. Также, если вы создали локальную переменную в какой-либо функции, она (вместе с объектом) удалится, когда функция завершит работу.
В отличии от конструкторов, в деструкторы нельзя передавать никакие параметры!
Чтобы создать деструктор, добавьте в класс метод __destruct(). Вот простой пример:
Мы создали простенький деструктор, который отображает на странице сообщение. Затем мы создали объект нашего класса и сразу же удалили его, вызвав метод unset() для переменной, которая ссылается на объект. Перед самым удалением объекта вызвался деструктор, который отобразил в браузере сообщение «Я деструктор. Объект был удален. Пока!».
Также следует заметить, что деструктор вызывается и при выходе из скрипта, так как все объекты и переменные при выходе из метода удаляются. Давайте посмотрим на пример:
Если работа скрипта прекратится из-за возникшей ошибки, деструктор тоже вызовется.
Примечание: при создании объектов класса-наследника, конструкторы класса-родителя не вызываются автоматически. Вызывается только конструктор самого наследника. Тем не менее вы можете вызвать конструктор родителя из класса-наследника таким образом: parent::__construct(). То же самое касается деструкторов. Вызвать деструктор родителя можно так: parent:__destruct().
О на следовании мы поговорим в следующих статьях. А на сегодня все!
PHP | Конструкторы и деструкторы
Конструкторы — это самые основные строительные блоки, которые определяют будущий объект и его природу. Можно сказать, что Конструкторы — это чертежи для создания объектов, предоставляющие значения для функций-членов и переменных-членов.
Как только объект инициализирован, конструктор вызывается автоматически. Деструкторы предназначены для уничтожения объектов и автоматически вызываются в конце выполнения.
В этой статье мы познакомимся с объектно-ориентированными концепциями конструкторов и деструкторов.
Оба являются специальными функциями-членами любого класса с разными понятиями, но одному и тому же имени, за исключением деструкторов, предшествует оператор
Синтаксис:
Типы конструктора:
Наследование. Поскольку Наследование является объектно-ориентированной концепцией, Конструкторы наследуются от родительского класса к дочернему классу, производному от него. Всякий раз, когда дочерний класс имеет свой собственный конструктор и деструктор, они вызываются в порядке приоритета или предпочтения.
Предварительно определенный конструктор по умолчанию: с помощью функции __construct () вы можете определить конструктор.
Примечание. В случае предварительно определенного конструктора (__ construct) и пользовательского конструктора в одном классе предварительно определенный конструктор становится конструктором, а пользовательский конструктор становится обычным методом.
Программа:
echo «Its a User-defined Constructor of the class Tree» ;
echo «Its a Pre-defined Constructor of the class Tree» ;
Выход:
Программа:
// Это инициализация свойств класса
Выход:
Конструкторы начинаются с двух подчеркиваний и обычно выглядят как обычные функции PHP. Иногда эти конструкторы называются магическими функциями, начинающимися с двух подчеркиваний и с некоторыми дополнительными функциональными возможностями, чем обычные методы. После создания объекта некоторого класса, который включает конструктор, содержимое конструктора будет выполнено автоматически.
Примечание. Если у класса PHP есть конструктор, то во время создания объекта вызывается конструктор класса. Конструкторы не имеют возвращаемого типа, поэтому они не возвращают ничего, даже void.
Преимущества использования Конструкторов:
Примечание. Метод __construct () всегда имеет открытый коэффициент видимости.
Программа:
print «Parent class constructor.\n» ;
class ChildClass extends Parentclass
print «Child Class constructor» ;
$obj = new ParentClass();
$obj = new ChildClass();
Выход
Примечание. Каждый раз, когда создается дочерний объект класса, конструктор подкласса будет вызываться автоматически.
Destructor: Destructor также является специальной функцией-членом, которая в точности противоположна методу конструктора и вызывается, когда экземпляр класса удаляется из памяти. Деструкторы (__destruct (void): void) — это методы, которые вызываются, когда нет ссылки на какой-либо объект класса, или выходит из области видимости или собирается выпустить явно.
У них нет типов или возвращаемого значения. Он вызывается только перед удалением памяти для объекта или во время завершения выполнения сценариев PHP или как только контроль выполнения покидает блок.
Глобальные объекты уничтожаются, когда завершается полный скрипт или код. Очистка ресурсов перед освобождением памяти или закрытием файлов происходит в методе деструктора, когда они больше не нужны в коде. Автоматическое уничтожение объектов класса обрабатывается PHP Garbage Collector.
Программа:
echo «In constructor, » ;
$obj = new Someclass();
Выход:
Примечание. В случае наследования, и если и дочерний, и родительский класс имеют деструкторы, сначала вызывается деструктор производного класса, а затем деструктор родительского класса.
Преимущества деструкторов:
Сравнение между __constructors и __destructors: