АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗ppOpBsCn 7 of 107 menu
Бесплатная Тренировка Верстки. Приглашаются желающие поверстать!

Конструктор объекта в ООП на PHP

Давайте рассмотрим следующий код:

<?php // Класс с публичными свойствами name и age: class User { public $name; public $age; } // Создаем объект класса: $user = new User; // Записываем данные: $user->name = 'john'; $user->age = 25; // Прочитываем данные: echo $user->name; // выведет 'john' echo $user->age; // выведет 25 ?>

В данном коде не очень удобно то, что легко можно забыть записать данные в какое-нибудь свойство объекта, особенно если этих свойств много.

Было бы удобно этот код:

<?php // Создаем объект класса: $user = new User; // Записываем данные: $user->name = 'john'; $user->age = 25; ?>

Заменить на вот этот:

<?php $user = new User('john', 25); // создадим объект, сразу заполнив его данными ?>

То есть сделать так, чтобы поля объекта заполнялись при его создании - в этом случае мы никак не сможем забыть задать значения этих полей.

Для решения проблемы нам поможет метод конструктор с названием __construct. Суть в следующем - если в коде класса существует метод с таким названием - он будет вызываться в момент создания объекта:

<?php class User { public $name; public $age; // Конструктор объекта: public function __construct() { echo '!!!'; } } $user = new User; // выведет '!!!' ?>

Конструктор в общем-то такой же метод, как и все остальные и может принимать параметры, смотрите на примере:

<?php class User { public $name; public $age; public function __construct($var1, $var2) { echo $var1 + $var2; // найдем сумму параметров } } $user = new User(1, 2); // выведет 3 ?>

Итак, давайте переделаем наш код, применив конструктор:

<?php class User { public $name; public $age; // Конструктор объекта: public function __construct($name, $age) { $this->name = $name; // запишем данные в свойство name $this->age = $age; // запишем данные в свойство age } } $user = new User('john', 25); // создадим объект, сразу заполнив его данными echo $user->name; // выведет 'john' echo $user->age; // выведет 25 ?>

Сделайте класс Employee, в котором будут следующие публичные свойства - name, age, salary. Сделайте так, чтобы эти свойства заполнялись в конструкторе при создании объекта.

Создайте объект класса Employee с именем 'eric', возрастом 25, зарплатой 1000.

Создайте объект класса Employee с именем 'kyle', возрастом 30, зарплатой 2000.

Выведите на экран сумму зарплат созданных вами юзеров.