Перейти к основному содержимому

ООП в PHP: классы и объекты

Класс работает как шаблон: он описывает структуру (свойства) и поведение (методы), которые будут у его объектов. Каждый объект при этом является отдельным экземпляром этого класса.


Определение класса

Чтобы определить класс, напишите ключевое слово class, затем имя класса, а затем пару фигурных скобок ({}). Всё, что относится к классу, и свойства, и методы, записывается между этими скобками.

Представьте класс с именем Fruit. Он мог бы хранить в свойствах name и color и предлагать два метода: один задаёт эти данные, а другой получает их.

Примечание: Свойство — это просто переменная внутри класса, а метод — это функция внутри класса.

Примечание: Внутри метода $this обозначает текущий объект и даёт доступ к его собственным свойствам и методам.

Определение класса

Класс Fruit с его свойствами и методами:

index.php
<?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:

Prompt
Напишите PHP-скрипт, который определяет класс Fruit с публичными свойствами $name и $color, методами set_details() и get_details(), затем создаёт два объекта ($apple и $banana) и выводит их данные.
Вывод: PHP-скрипт

PHP — instanceof

Нужно узнать, принадлежит ли объект определённому классу? На этот вопрос отвечает ключевое слово instanceof:

Пример instanceof

Здесь instanceof проверяет, принадлежит ли $apple классу Fruit, а var_dump() показывает ответ:

Prompt
Напишите PHP-скрипт, который создаёт объект Fruit и использует var_dump() вместе с instanceof, чтобы проверить, принадлежит ли он классу Fruit.
Вывод: PHP-скрипт