До этого урока мы писали наши классы в том же файле, где и вызывали их.
В реальной жизни классы обычно хранятся в отдельных файлах, причем каждый класс - в своем отдельном файле.
При этом существует соглашение о том, что файл с классом следует называть так же, как и сам класс.
Например, если у нас есть класс 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, создайте два объекта этого класса с произвольными данными, выведите на экран сумму их зарплат.