ученикам: ушел в отпуск до 15-го июня. в отпуске буду по возможности отвечать на вопросы, но могу пропадать

Хранение классов в отдельных файлах

До этого урока мы писали наши классы в том же файле, где и вызывали их.

В реальной жизни классы обычно хранятся в отдельных файлах, причем каждый класс - в своем отдельном файле.

При этом существует соглашение о том, что файл с классом следует называть так же, как и сам класс.

Например, если у нас есть класс User, то хранить его мы будем в файле User.php.

Давайте посмотрим на практике. Сделаем файл User.php с классом User:

<?php // Файл User.php class User { } ?>

Пусть теперь у нас есть файл index.php, в котором мы хотим воспользоваться нашим классом User.

Мы не можем в этом файле просто взять и создать объект класса User - это вызовет ошибку, так как PHP не сможет найди код этого класса:

<?php // Файл index.php $user = new User; // это вызовет ошибку ?>

Для того, чтобы класс User был доступен в файле index.php, нужно подключить файл User.php с этим классом к нашему файлу index.php.

Это делается с помощью команды require. Она работает подобно команде include, но не вставляет текст подключаемого файла прям в это место, а просто говорит PHP, чтобы он сделал доступными все переменные, функции и классы из подключаемого файла.

Как раз то, что нам надо:

<?php // Файл index.php require 'User.php'; //!! подключаем наш класс $user = new User; // теперь ошибки не будет ?>

На самом деле подключение классов через require не очень удобная вещь, так как, если вы попытаетесь сделать подключение файла в нескольких местах (такое часто нужно), то повторное подключение приведет к ошибке - PHP скажет, что такой класс с таким именем уже создан.

Более удобная практика - использовать команду require_once, которая подключает файл только если он не был подключен ранее:

<?php // Файл index.php require_once 'User.php'; // подключаем наш класс $user = new User; ?>

Пока, возможно, вам не особо понятна принципиальная разница между require и require_once.

Пока просто везде подключайте классы через require_once. В дальнейшем на практике вы поймете удобство именно этого варианта подключения.

В следующих уроках для простоты я не буду указывать, что классы хранятся в разных файла, но при решении задач делайте именно так.

Сделайте класс Employee, в котором будут следующие свойства: name (имя), surname (фамилия), patronymic (отчество) и salary (зарплата).

Пусть этот класс хранится в отдельном файле.

Подключите к файлу index.php класс Employee, создайте два объекта этого класса с произвольными данными, выведите на экран сумму их зарплат.