ООП в PHP: классы и объекты
Класс работает как шаблон: он описывает структуру (свойства) и поведение (методы), которые будут у его объектов. Каждый объект при этом является отдельным экземпляром этого класса.
Определение класса
Чтобы определить класс, напишите ключевое слово class, затем имя класса, а затем пару фигурных скобок ({}). Всё, что относится к классу, и свойства, и методы, записывается между этими скобками.
Представьте класс с именем Fruit. Он мог бы хранить в свойствах name и color и предлагать два метода: один задаёт эти данные, а другой получает их.
Примечание: Свойство — это просто переменная внутри класса, а метод — это функция внутри класса.
Примечание: Внутри метода $this обозначает текущий объект и даёт доступ к его собственным свойствам и методам.
Определение класса
Класс Fruit с его свойствами и методами:
<?php
class Fruit {
// Properties
public $name;
public $color;
// Method to set the properties
function set_details($name, $color) {
$this->name = $name;
$this->color = $color;
}
// Method to display the properties
function get_details() {
echo "Name: " . $this->name . ". Color: " . $this->color .".<br>";
}
}
?>
Определение объектов
Класс не приносит пользы, пока вы не создадите из него объекты. Из одного класса можно получить столько объектов (экземпляров), сколько вам нужно. Все они получают свойства и методы, определённые в классе, но каждый хранит собственные значения свойств.
Объект создаётся с помощью ключевого слова new.
Создание объектов
Здесь класс Fruit создаёт два отдельных объекта, $apple и $banana:
Вывод: PHP-скрипт
<?php
class Fruit {
public $name;
public $color;
function set_details($name, $color) {
$this->name = $name;
$this->color = $color;
}
function get_details() {
echo "Название: " . $this->name . ". Цвет: " . $this->color .".<br>";
}
}
// Создаём объект с именем $apple из класса Fruit
$apple = new Fruit();
$apple->set_details('Apple', 'Red');
$apple->get_details();
// Создаём объект с именем $banana из класса Fruit
$banana = new Fruit();
$banana->set_details('Banana', 'Yellow');
$banana->get_details();
?>
PHP — instanceof
Нужно узнать, принадлежит ли объект определённому классу? На этот вопрос отвечает ключевое слово instanceof:
Пример instanceof
Здесь instanceof проверяет, принадлежит ли $apple классу Fruit, а var_dump() показывает ответ:
Вывод: PHP-скрипт
<?php
class Fruit {
// Свойства
public $name;
public $color;
}
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>