Ця стаття орієнтована на розробників, які вже знайомі з концепціями об'єктно-орієнтованого програмування (ООП), але хочуть швидко і стисло освіжити свої знання. Замість довгих пояснень, стаття зосереджена на основних прикладах, щоб ви могли швидко повернутися до роботи. Незалежно від того, чи готуєтеся ви до інтерв'ю або повертаєтеся до принципів ООП, цей посібник буде ефективним способом для швидкого перегляду.
Що таке об'єктно-орієнтоване програмування?
Об'єктно-орієнтоване програмування — це парадигма програмування, що базується на концепції "об'єктів", які можуть містити дані у вигляді полів (часто називаються властивостями) та код у вигляді функцій (часто називаються методами). ООП зосереджене на структуризації вашого коду таким чином, щоб моделювати реальні об'єкти, що полегшує розуміння, підтримку та масштабування.
Ключові концепції ООП у PHP
- Класи та об'єкти
- Властивості та методи
- Конструктори та деструктори
- Наслідування
- Інкапсуляція
- Поліморфізм
- Абстракція
- Інтерфейси
- Трейти
1. Класи та об'єкти
Клас — це шаблон для створення об'єктів. Об'єкт — це екземпляр класу.
Приклад:
$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "Red";
echo "Brand: " . $myCar->brand . ", Color: " . $myCar->color . "";
$myCar->drive();
?>
2. Властивості та методи
Властивості — це змінні, які належать класу. Методи — це функції, які визначають поведінку класу.
Приклад:
class Calculator {
private $result = 0;
public function add($value) {
$this->result += $value;
}
public function getResult() {
return $this->result;
}
}
$calc = new Calculator();
$calc->add(10);
$calc->add(20);
echo "Result: " . $calc->getResult();
?>
3. Конструктори та деструктори
Конструктор ініціалізує об'єкт під час його створення. Деструктор очищає ресурси, коли об'єкт більше не потрібен.
Приклад:
class Person {
private $name;
public function __construct($name) {
$this->name = $name;
echo "Hello, " . $this->name . "!";
}
public function __destruct() {
echo $this->name . " is being destroyed.";
}
}
$person = new Person("Alice");
// Деструктор викликається автоматично наприкінці скрипта.
?>
4. Наслідування
Наслідування дозволяє класу успадковувати властивості та методи від іншого класу.
Приклад:
class Animal {
public $name;
public function eat() {
echo $this->name . " is eating.";
}
}
class Dog extends Animal {
public function bark() {
echo $this->name . " is barking.";
}
}
$dog = new Dog();
$dog->name = "Buddy";
$dog->eat();
$dog->bark();
?>
5. Інкапсуляція
Інкапсуляція обмежує прямий доступ до деяких властивостей та методів об'єкта. Для забезпечення інкапсуляції використовуйте видимість private
або protected
.
Приклад:
class BankAccount {
private $balance;
public function __construct($initialBalance) {
$this->balance = $initialBalance;
}
public function deposit($amount) {
if ($amount > 0) {
$this->balance += $amount;
}
}
public function getBalance() {
return $this->balance;
}
}
$account = new BankAccount(100);
$account->deposit(50);
echo "Balance: " . $account->getBalance();
?>
## Поліморфізм
**Поліморфізм** дозволяє методам мати різні реалізації в залежності від класу, що їх використовує.
### Приклад:
class Shape {
public function area() {
return 0;
}
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return pi() * pow($this->radius, 2);
}
}
class Rectangle extends Shape {
private $length;
private $width;
public function __construct($length, $width) {
$this->length = $length;
$this->width = $width;
}
public function area() {
return $this->length * $this->width;
}
}
$circle = new Circle(5);
echo "Circle Area: " . $circle->area() . "";
$rectangle = new Rectangle(4, 6);
echo "Rectangle Area: " . $rectangle->area();
?>
```
7. Абстракція
Абстракція приховує деталі реалізації і показує лише основні характеристики об'єкта. Використовуйте abstract
класи або інтерфейси.
Приклад:
abstract class Vehicle {
public $name;
abstract public function move();
}
class Bicycle extends Vehicle {
public function move() {
echo "The bike is moving.";
}
}
class Car extends Vehicle {
public function move() {
echo "The car is driven.";
}
}
$bike = new Bicycle();
$bike->move();
$car = new Car();
$car->move();
?>
8. Інтерфейси
Інтерфейс визначає контракт, якому повинні відповідати класи, що його реалізують.
Приклад:
interface PaymentGateway {
public function pay($amount);
}
class PayPal implements PaymentGateway {
public function pay($amount) {
echo "Paid $amount using PayPal.";
}
}
class Stripe implements PaymentGateway {
public function pay($amount) {
echo "Paid $amount using Stripe.";
}
}
$paypal = new PayPal();
$paypal->pay(100);
$stripe = new Stripe();
$stripe->pay(200);
?>
9. Трейти
Трейти дозволяють повторно використовувати код в PHP класах.
Приклад:
trait Logger {
public function log($message) {
echo $message;
}
}
class User {
use Logger;
public function createUser($name) {
$this->log("User $name created.");
}
}
$user = new User();
$user->createUser("John Doe");
?>
Об'єктно-орієнтоване програмування в PHP надає потужну основу для створення надійних, масштабованих і підтримуваних додатків. Опанувавши концепції ООП, такі як класи, наслідування, інкапсуляція та поліморфізм, ви зможете створювати чистіший і більш організований код.
ООП — це не просто функція PHP, а спосіб мислення, який змінює підхід до вирішення проблем у розробці. Почніть застосовувати ці концепції до своїх проєктів вже сьогодні і оцініть переваги на власному досвіді!
Слідкуйте на YouTube: https://www.youtube.com/@ProgrammingWithRoki
Купити домен та хостинг: Hostinger
Щасливого кодування! 🚀
Перекладено з: OOP Concepts in PHP Explained in 4 Minutes