PHP ООП — классы и объекты
Класс — это шаблон для объектов, а объект — это экземпляр класса.
Кейс ООП
Предположим, у нас есть класс Fruit. Fruit может иметь такие свойства, как имя, цвет, вес и т. д. Мы можем определить такие переменные, как $name, $color и $weight, чтобы хранить значения этих свойств.
Когда создаются отдельные объекты (яблоко, банан и т. д.), они наследуют все свойства и поведение класса, но каждый объект будет иметь разные значения свойств.
Определить класс
Класс определяется с помощью class
ключевого слова, за которым следует имя класса и пара фигурных скобок ({}). Все его свойства и методы заключаются в фигурные скобки:
Синтаксис
<?php
class Fruit {
// code goes here...
}
?>
Ниже мы объявляем класс Fruit, состоящий из двух свойств ($name и $color) и двух методов set_name() и get_name() для установки и получения свойства $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Примечание. В классе переменные называются свойствами, а функции — методами!
Определить объекты
Классы ничто без объектов! Мы можем создать несколько объектов из класса. Каждый объект имеет все свойства и методы, определенные в классе, но они будут иметь разные значения свойств.
Объекты класса создаются с использованием new
ключевого слова.
В приведенном ниже примере $apple и $banana являются экземплярами класса Fruit:
Пример
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
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 {
// Properties
public $name;
public $color;
// Methods
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
ключевое слово, чтобы проверить, принадлежит ли объект определенному классу:
Пример
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>