Menu
Coddy logo textTech

Конструктор (__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 гарантирует, что каждый объект правильно настроен с его начальными данными при создании. Это избавляет вас от необходимости вручную устанавливать свойства после создания объекта.

challenge icon

Задание

Легко

Вам даны 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";
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование