PHP ООП - Класи та об’єкти
Клас — це шаблон для об’єктів, а об’єкт — це екземпляр класу.
OOП Кейс
Припустімо, що у нас є клас під назвою Fruit (фрукт). Фрукт може мати такі властивості, як назва, колір, вага тощо. Ми можемо визначити такі змінні, як $name, $color і $weight, щоб зберігати значення цих властивостей.
Коли окремі об’єкти (яблуко, банан тощо) створюються, вони успадковують усі властивості та поведінку від класу, але кожен об’єкт матиме різні значення для властивостей.
Визначити клас
Клас визначається за допомогою ключового слова class
, після якого йде назва класу та пара фігурних дужок ({}). Усі його властивості та методи містяться в дужках:
Синтаксис
<?php
class Fruit {
// тут іде код...
}
?>
Нижче ми оголошуємо клас під назвою Fruit, який складається з двох властивостей ($name і $color) і двох методів set_name() і get_name() для встановлення та отримання властивості $name:
<?php
class Fruit {
// Властивості
public $name;
public $color;
// Методи
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Примітка: У класі змінні називаються властивостями, а функції — методами!
Визначити об’єкти
Класи ніщо без об’єктів! Ми можемо створити кілька об’єктів з класу. Кожен об’єкт має всі властивості та методи, визначені в класі, але вони матимуть різні значення властивостей.
Об’єкти класу створюються за допомогою ключового слова new
.
У наведеному нижче прикладі $apple і $banana є екземплярами класу Fruit:
Приклад
<?php
class Fruit {
// Властивості
public $name;
public $color;
// Методи
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
Спробуйте самі »
У прикладі нижче ми додаємо ще два методи до класу Fruit для встановлення та отримання властивості $color:
Приклад
<?php
class Fruit {
// Властивості
public $name;
public $color;
// Методи
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
Спробуйте самі »
PHP - Ключове слово $this
Ключове слово $this посилається на поточний об’єкт і доступне лише всередині методів.
Погляньте на наступний приклад:
Приклад
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Отже, де ми можемо змінити значення властивості $name? Є два способи:
1. Усередині класу (додавши метод set_name() і використовуючи $this):
Приклад
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
Спробуйте самі »
2. Поза класом (безпосередньо змінюючи значення властивості):
Приклад
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
Спробуйте самі »
PHP - instanceof
Ви можете використовувати ключове слово instanceof
, щоб перевірити, чи належить об’єкт до певного класу: