У PHP абстрактний клас - це клас, який не може бути створений самостійно, а лише використовується як базовий клас для інших класів. Абстрактний клас може містити абстрактні методи (методи без реалізації), які повинні бути реалізовані в дочірніх класах.
Ось приклад абстрактного класу в PHP:
abstract class Shape {
abstract public function calculateArea();
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return pi() * $this->radius * $this->radius;
}
}
class Square extends Shape {
private $side;
public function __construct($side) {
$this->side = $side;
}
public function calculateArea() {
return $this->side * $this->side;
}
}
Інтерфейс в PHP визначає контракт, який клас повинен виконати. Інтерфейс може включати в себе лише методи без реалізації. Клас, який імплементує інтерфейс, повинен надати реалізації всіх методів, визначених в інтерфейсі.
Ось приклад використання інтерфейсу в PHP:
interface Shape {
public function calculateArea();
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return pi() * $this->radius * $this->radius;
}
}
class Square implements Shape {
private $side;
public function __construct($side) {
$this->side = $side;
}
public function calculateArea() {
return $this->side * $this->side;
}
}
Отже, основна відмінність між абстрактним класом і інтерфейсом в PHP полягає в тому, що абстрактний клас може мати реалізовані методи та властивості, а також може бути використаний для створення об'єктів (хоча сам по собі він абстрактний), тоді як інтерфейс може містити лише недореалізовані методи та не може бути використаний для створення об'єктів.