Учебник по PHP

PHP ГЛАВНАЯ Введение в PHP Установка PHP Синтаксис PHP Комментарии PHP PHP-переменные PHP-эхо/печать Типы данных PHP PHP-строки PHP-номера PHP-математика PHP-константы PHP-операторы PHP Если... Иначе... Иначе PHP-переключатель PHP-циклы PHP-функции PHP-массивы PHP-суперглобальные переменные PHP регулярное выражение

PHP- формы

Обработка форм PHP Проверка формы PHP Требуется PHP-форма URL-адрес формы PHP/электронная почта PHP-форма завершена

PHP продвинутый

Дата и время PHP PHP включает Обработка файлов PHP Открытие/чтение файла PHP Создание/запись файла PHP Загрузка файла PHP PHP-куки PHP-сессии PHP-фильтры Расширенные фильтры PHP Функции обратного вызова PHP PHP JSON Исключения PHP

PHP ООП

PHP Что такое ООП PHP-классы/объекты PHP-конструктор PHP-деструктор Модификаторы доступа PHP Наследование PHP PHP-константы Абстрактные классы PHP PHP-интерфейсы Особенности PHP Статические методы PHP Статические свойства PHP Пространства имен PHP Итерации PHP

База данных MySQL

База данных MySQL Подключиться к MySQL MySQL Создать БД MySQL Создать таблицу Вставка данных MySQL MySQL Получить последний идентификатор MySQL Вставить несколько MySQL подготовлен Выбор данных MySQL MySQL Где Порядок MySQL MySQL Удалить данные Данные обновления MySQL Предельные данные MySQL

PHP XML

XML-парсеры PHP Парсер PHP SimpleXML PHP SimpleXML — Получить PHP XML Expat PHP XML DOM

PHP — АЯКС

Введение в АЯКС АЯКС PHP База данных AJAX АЯКС XML AJAX-поиск в реальном времени АЯКС-опрос

Примеры PHP

Примеры PHP PHP-компилятор PHP-викторина PHP-упражнения PHP-сертификат

Справочник по PHP

Обзор PHP PHP-массив Календарь PHP Дата PHP PHP-каталог Ошибка PHP PHP-исключение Файловая система PHP PHP-фильтр PHP FTP PHP JSON Ключевые слова PHP PHP-библиотека XML PHP-почта PHP-математика PHP Разное PHP MySQLi PHP-сеть Управление выводом PHP PHP регулярное выражение PHP SimpleXML PHP-поток PHP-строка Обработка переменных PHP XML-парсер PHP PHP-архив Часовые пояса PHP

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);
?>