тк 3 июля праздник (в беларуси), буду не онлайн (по возможности буду отвечать)

Введение в классы и объекты

Сейчас мы с вами займемся изучением ООП в PHP. Давайте рассмотрим пример из жизни, а потом перенесем его на PHP.

В качестве примера возьмем автомобиль. У него есть колеса, цвет, вид кузова, объем двигателя и так далее. Кроме того, водитель может отдавать ему команды: ехать, остановится, повернуть направо, налево и тп.

Можно говорить о том, что существует некоторый класс автомобилей, обладающий общими свойствами (у всех есть колеса и всем им можно отдавать команды).

Конкретный автомобиль, стоящий на улице - это представитель этого класса, или, другими словами, объект этого класса.

У всех объектов этого класса есть свойства (их также называют полями): количество колес, цвет, вид кузова и методы: ехать, остановится, повернуть направо, налево.

Другими словами сам класс - это чертеж, по которым на заводе делаются автомобили. Объект же - это сама машина, сделанная по этим чертежам.

В PHP класс создается с помощью ключевого слова class, за которым следует название этого класса.

Давайте сделаем класс Car (то есть Автомобиль):

<?php class Car { // тут код, то есть PHP-чертеж автомобиля } ?>

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

Укажем теперь в нашем чертеже, что любой автомобиль, созданный по этому чертежу, будет иметь свойство для цвета и свойство для количества топлива.

Для этого внутри класса напишем свойство $color (цвет) и свойство $fuel (топливо):

<?php class Car { // Зададим свойства (по сути переменные класса): public $color; // цвет автомобиля public $fuel; // количество топлива } ?>

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

Давайте теперь сделаем методы нашего класса. В PHP методы, подобно обычным функциям, объявляются с помощью ключевого слова function, перед которым пишется ключевое слово public.

Как уже упоминалось выше, наш автомобиль может ехать, может поворачивать, может останавливаться. Сделаем соответствующие методы в нашем классе:

<?php class Car { public $color; // цвет автомобиля public $fuel; // количество топлива // Команда ехать: public function go() { // какой-то PHP код } // Команда поворачивать: public function turn() { // какой-то PHP код } // Команда остановиться: public function stop() { // какой-то PHP код } } ?>

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

В PHP это делается с помощью ключевого слова new, после которого пишется имя класса:

<?php new Car; // командуем заводу сделать автомобиль ?>

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

Пусть эта переменная будет называться $myCar (мойАвтомобиль) - запишем в нее созданный нами объект:

<?php $myCar = new Car; // запишем созданный объект в переменную $myCar ?>

После создания автомобиля можно обращаться к его свойствам. Обращение к ним происходит через стрелочку ->, вот так: имяОбъекта->егоСвойство.

Давайте установим свойства нашего объекта:

<?php $myCar = new Car; // командуем заводу сделать автомобиль // Устанавливаем свойства объекта: $myCar->color = 'red'; // красим в красный цвет $myCar->fuel = 50; // заливаем топливо ?>

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

Обращение к методам также происходит через стрелочку ->, но, в отличие от свойства, после имени метода следует писать круглые скобки, вот так: имяОбъекта->егоМетод().

Давайте покомандуем нашим объектом:

<?php // Задаем команды созданному автомобилю: $myCar->go(); // автомодиль->едь $myCar->turn(); // автомодиль->поверни $myCar->stop(); // автомодиль->остановись ?>