PHP с нуля. Урок #8.2. Конструктор класса

Премиум
Премиум
Статус
Оффлайн
Регистрация
3 Дек 2017
Сообщения
234
Реакции
201
Сегодня тема будет маленькая, но важная в изучении ООП.
Тема - конструкторы класса в PHP.

Начнем.

Классы, в которых объявлен метод-конструктор, будут вызывать этот метод при каждом создании нового объекта, так что это может оказаться полезным, например, для инициализации какого-либо состояния объекта перед его использованием. Говоря проще, конструкторы - специальные функции, которые вызываются при создании экземпляра класса.
Объявить конструктор класса someClass можно так:
Код:
Expand Collapse Copy
class someClass {
    public $param1; // Необязательно создавать переменную,
    private $param2; // Здесь просто для примера
    function __construct($param1, $param2) { // Конструктор работает также, как и обычная функция, и может принимать параметры
        $this->param1 = $param1; // И устанавливать значения переменных изнутри класса
        $this->param2 = $param2;
    }
    function get2() {
        return $this->param2; // Функция для получения значения private-переменной
    }
}
Чтобы задать параметры вызова конструктора класса, необходимо их передать в скобках, также как и в функциях - вот на примере класса someClass (выше):
Код:
Expand Collapse Copy
$someObj = new someClass("param1", 25); // Создали объект, передав параметры в конструктор
echo $someClass->get2(); // Выведет 25, так как функция get2 выводит значение $param2, которое мы установили с помощью конструктора
Чтобы вызвать конструктор родительского класса (об этом в следующем уроке) изнутри текущего, необходимо использовать parent::__construct()
Деструктор класса работает почти так же, как и конструктор, только вызывается при уничтожении объекта или завершении скрипта.
Код:
Expand Collapse Copy
<?php
class someClass {

    function __construct() {

    }

    function __destruct() {
        echo "Деструктор вызван";
        exit();

    }

}



$someObj = new someClass();

unset($someObj); // Скрипт выведет надпись и завершит работу - выполнится содержимое деструктора
echo "Эта надпись уже не выведется"; // Потому что скрипт уже завершил работу
_________________________________________________________________________
Если у вас возникли вопросы - пишите в теме. Надеюсь, отвечу :)
Если вы нашли у меня ошибку - пишите в ЛС, чтобы не засорять тему - поправлю.
Если вы хотите дополнить меня - пишите в теме, либо в ЛС - добавлю, оставлю credits.
 
Последнее редактирование:
Назад
Сверху Снизу