Курс — «Программирование на PHP8 для начинающих» — #13 Объектно-ориентированное программирование. Классы и объекты
Здравствуйте, дорогие друзья.
Объектно-ориентированное программирование (ООП) является мощным подходом к разработке программного обеспечения, который позволяет создавать более структурированные и поддерживаемые приложения. В PHP ООП реализуется с помощью классов и объектов. В этом разделе мы рассмотрим основные концепции классов и объектов в PHP.
Классы
Класс — это шаблон для создания объектов. Он определяет свойства (переменные) и методы (функции), которые будут доступны объектам, созданным на основе этого класса.
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php class Person { // Свойства public $name; public $age; // Методы public function greet() { echo "Hello, " . $this->name . "!"; } } ?> |
Объекты
Объект — это экземпляр класса. Он содержит конкретные значения свойств и может вызывать методы, определенные в классе.
1 2 3 4 5 6 7 8 9 10 11 |
<?php // Создание объекта класса Person $person = new Person(); // Установка значений свойств $person->name = "Alice"; $person->age = 30; // Вызов метода $person->greet(); // Вывод: Hello, Alice! ?> |
Конструкторы
Конструктор — это специальный метод, который вызывается при создании объекта. Он используется для инициализации свойств объекта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php class Person { public $name; public $age; // Конструктор public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function greet() { echo "Hello, " . $this->name . "!"; } } // Создание объекта с использованием конструктора $person = new Person("Alice", 30); $person->greet(); // Вывод: Hello, Alice! ?> |
Модификаторы доступа
Модификаторы доступа определяют, какие свойства и методы будут доступны вне класса. В PHP существует три модификатора доступа: public
, protected
и private
.
- public: Свойства и методы доступны из любого места.
- protected: Свойства и методы доступны только внутри класса и его подклассов.
- private: Свойства и методы доступны только внутри класса.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php class Person { public $name; protected $age; private $ssn; public function __construct($name, $age, $ssn) { $this->name = $name; $this->age = $age; $this->ssn = $ssn; } public function getAge() { return $this->age; } private function getSSN() { return $this->ssn; } } $person = new Person("Alice", 30, "123-45-6789"); echo $person->name; // Вывод: Alice echo $person->getAge(); // Вывод: 30 // echo $person->getSSN(); // Ошибка: Call to private method ?> |
Наследование
Наследование позволяет создавать новые классы на основе существующих. Новый класс (подкласс) наследует свойства и методы базового класса (суперкласса).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php class Person { public $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function greet() { echo "Hello, " . $this->name . "!"; } } class Student extends Person { public $studentId; public function __construct($name, $age, $studentId) { parent::__construct($name, $age); $this->studentId = $studentId; } public function study() { echo $this->name . " is studying."; } } $student = new Student("Alice", 20, "S12345"); $student->greet(); // Вывод: Hello, Alice! $student->study(); // Вывод: Alice is studying. ?> |
Пример использования классов и объектов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php // Определение класса Car class Car { private $make; private $model; private $year; public function __construct($make, $model, $year) { $this->make = $make; $this->model = $model; $this->year = $year; } public function getDetails() { return "Make: " . $this->make . ", Model: " . $this->model . ", Year: " . $this->year; } } // Создание объекта класса Car $car = new Car("Toyota", "Corolla", 2020); echo $car->getDetails(); // Вывод: Make: Toyota, Model: Corolla, Year: 2020 // Определение подкласса ElectricCar class ElectricCar extends Car { private $batteryCapacity; public function __construct($make, $model, $year, $batteryCapacity) { parent::__construct($make, $model, $year); $this->batteryCapacity = $batteryCapacity; } public function getBatteryCapacity() { return $this->batteryCapacity; } } // Создание объекта класса ElectricCar $electricCar = new ElectricCar("Tesla", "Model S", 2021, 100); echo $electricCar->getDetails(); // Вывод: Make: Tesla, Model: Model S, Year: 2021 echo "Battery Capacity: " . $electricCar->getBatteryCapacity() . " kWh"; // Вывод: Battery Capacity: 100 kWh ?> |
Классы и объекты являются фундаментальными концепциями объектно-ориентированного программирования в PHP. Они позволяют создавать структурированные и повторно используемые компоненты, которые упрощают разработку и поддержку сложных приложений.
На этом все. Всем хорошего дня!
Цикл статей по курсу — «Программирование на PHP8 для начинающих».