Конструктор (__construct)
Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 7 из 91.
Метод __construct — это специальный метод, который автоматически запускается при создании нового объекта. Он инициализирует свойства объекта.
Вот пример класса с конструктором:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}Метод __construct принимает параметры и присваивает их свойствам с помощью $this.
Создавайте объекты с помощью конструктора:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");Когда вы вызываете new Dog("Rex", "German Shepherd"), PHP автоматически вызывает __construct и передает аргументы.
Получите доступ к свойствам, которые были установлены конструктором:
echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";Вывод:
Rex
German Shepherd
Buddy
Golden RetrieverВы также можете создать конструктор со значениями параметров по умолчанию:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age defaults to 1
echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";Вывод:
Fluffy is 3 years old
Whiskers is 1 years oldКлючевой момент: Метод __construct гарантирует, что каждый объект правильно настроен с его начальными данными при создании. Это избавляет вас от необходимости вручную устанавливать свойства после создания объекта.
Задание
ЛегкоВам даны PHP-файлы (book.php и driver.php) для реализации системы книг.
Ваша задача:
- Завершите класс
Bookвbook.phpметодом__construct, который инициализирует свойства$title,$authorи$pages - В
driver.phpимпортируйте и создайте объект книги для"Harry Potter"автора"J.K. Rowling"с400страницами
Следуйте комментариям TODO в каждом файле.
Шпаргалка
Метод __construct — это специальный метод, который автоматически запускается при создании нового объекта для инициализации его свойств.
Определите конструктор в классе:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}Создайте объекты, используя конструктор:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");Получите доступ к свойствам, установленным конструктором:
echo $rex->name; // Rex
echo $rex->breed; // German ShepherdКонструкторы могут иметь значения параметров по умолчанию:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // возраст по умолчанию равен 1Попробуйте сами
<?php
require_once 'book.php';
// TODO: Создайте объект Book с:
// название: "Harry Potter", автор: "J.K. Rowling", страниц: 400
$myBook = ?;
echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\n";
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово $thisМетодыСвойстваКонструктор (__construct)Деструктор (__destruct)Итоги — Простой калькулятор4Наследование
Основы наследованияКлючевое слово parent::Переопределение методовКлючевое слово finalАбстрактные классыИтоги — Иерархия сотрудников7Инкапсуляция
Public, Protected, PrivateПодробный разбор модификаторов доступаГеттеры и сеттерыСокрытие данныхConstructor Promotion (8.0)Итоги — Система учета студентов10Продвинутые концепции ООП
Композиция против наследованияВнедрение зависимостейАнонимные классыПеречисления (PHP 8.1)Файберы (PHP 8.1)Глубокое погружение в клонирование объектовГенераторы и итераторы13Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий2Пространства имен и автозагрузка
Введение в пространства именКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerИтоги: структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс против абстрактного классаType Hinting с интерфейсамиИтоги — Калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeИтоги — Кастомная коллекция11Система типов и обработка ошибок
Объявление типовNullable-типыТипы объединения и пересеченияКлассы исключенийИерархия пользовательских исключенийTry, Catch, FinallyИтоги — Валидатор форм14Проект: Управление библиотекой
Обзор проектаКлассы Book и User3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищенные свойстваСвойства Readonly (PHP 8.1)Итоги — Менеджер банковского счета6Полиморфизм
Снова о переопределении методовПолиморфизм через интерфейсыType Hinting и Union TypesПозднее статическое связываниеИтоги — Payment Processor9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy