PHP - Классы и объекты
Добро пожаловать, ambitioznЫЕ программисты! Сегодня мы окунемся в захватывающий мир классов и объектов PHP. Не worry, если эти термины кажутся вам немного пугающими - к концу этого урока вы будете создавать свои собственные классы и объекты, как профессионalf!

Что такое классы и объекты?
Прежде чем перейти к коду, давайте поймем, что такое классы и объекты. Представьте, что вы строите дом. Класс будет resemble план дома, а объект - этоactual дом, построенный по этому плану. Вы можете создать много домов (объектов) из одного плана (класса).
Определение класса в PHP
Давайте начнем с создания нашего первого класса PHP. Мы создадим простой класс Car.
<?php
class Car {
// Свойства класса
public $brand;
public $color;
// Метод класса
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
?>
Давайте разберем это:
- Мы начинаем с ключевого слова
class, за которым следует имя нашего класса (в данном случае,Car). - Внутри класса мы определяем свойства (variables) такие как
$brandи$color. - Мы также определяем метод (функцию) под названием
startEngine().
Создание объектов из класса
Теперь, когда у нас есть класс Car, давайте создадим несколько объектов машин!
<?php
// Создание объектов машин
$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "Red";
$friendsCar = new Car();
$friendsCar->brand = "Honda";
$friendsCar->color = "Blue";
// Использование метода объекта
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
Результат:
Vroom! The Red Toyota is starting.
Vroom! The Blue Honda is starting.
Вот что происходит:
- Мы используем ключевое слово
newдля создания объектов из нашего классаCar. - Мы устанавливаем свойства каждого объекта, используя оператор стрелки (
->). - Мы вызываем метод
startEngine()для каждого объекта.
Конструктор метода
Теперь давайте сделаем наш класс немного более сложным, добавив конструктор. Конструктор - это special метод, который вызывается при создании объекта.
<?php
class Car {
public $brand;
public $color;
// Конструктор
public function __construct($brand, $color) {
$this->brand = $brand;
$this->color = $color;
}
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
// Создание объектов машин с помощью конструктора
$myCar = new Car("Toyota", "Red");
$friendsCar = new Car("Honda", "Blue");
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
Конструктор позволяет нам устанавливать brand и color при создании объекта, делая наш код чище и эффективнее.
Наследование
Одна из мощных функций ООП - наследование. Оно позволяет нам создавать новый класс на основе существующего. Давайте создадим класс ElectricCar, который наследуется от нашего класса Car.
<?php
class ElectricCar extends Car {
public $batteryLife;
public function __construct($brand, $color, $batteryLife) {
parent::__construct($brand, $color);
$this->batteryLife = $batteryLife;
}
public function chargeBattery() {
return "The $this->color $this->brand is charging. Current battery life: $this->batteryLife%";
}
}
$teslaModel3 = new ElectricCar("Tesla", "White", 80);
echo $teslaModel3->startEngine();
echo $teslaModel3->chargeBattery();
?>
Результат:
Vroom! The White Tesla is starting.
The White Tesla is charging. Current battery life: 80%
Здесь ElectricCar наследует все свойства и методы Car и добавляет свои собственные свойства ($batteryLife) и метод (chargeBattery()).
Модификаторы доступа
В ООП мы можем контролировать видимость свойств и методов с помощью модификаторов доступа. Их три:
| Модификатор | Описание |
|---|---|
| public | Доступен из anywhere |
| protected | Доступен внутри класса и производных классов |
| private | Доступен только внутри класса |
Давайте изменим наш класс Car, чтобы использовать их:
<?php
class Car {
protected $brand;
private $engineStarted = false;
public function __construct($brand) {
$this->brand = $brand;
}
public function startEngine() {
$this->engineStarted = true;
return "The $this->brand's engine is now running.";
}
public function isEngineRunning() {
return $this->engineStarted;
}
}
$myCar = new Car("Toyota");
echo $myCar->startEngine();
echo $myCar->isEngineRunning() ? "Engine is running" : "Engine is off";
// Это вызовет ошибку: echo $myCar->engineStarted;
?>
Теперь $brand является защищенным (доступен в производных классах), $engineStarted является частным (доступен только внутри класса Car), а наши методы остаются общественными.
Заключение
Поздравляю! Вы только что сделали свои первые шаги в мир объектно-ориентированного программирования с PHP. Мы рассмотрели классы, объекты, конструкторы, наследование и модификаторы доступа. Эти концепции являются основой ООП и будут служить вам хорошо по мере продолжения вашего пути в программировании.
Помните, что практика makes perfect. Попробуйте создать свои собственные классы, экспериментируйте с различными свойствами и методами и не бойтесь ошибок - это как мы учимся! Счастливого кодирования!
Credits: Image by storyset
