ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

PHP Учебник

PHP СТАРТ PHP Интро PHP Установка PHP Синтаксис PHP Комментарии PHP Переменные PHP Echo / Print PHP Типы данных PHP Строки PHP Числа PHP Математика PHP Константы PHP Операторы PHP If...Else...Elseif PHP Switch PHP Циклы PHP Функции PHP Массивы PHP Суперглобальные PHP RegEx

PHP Формы

PHP Обработка формы PHP Проверка формы PHP Обязательные поля формы PHP Форма URL/E-mail PHP Заполнение формы

PHP Расширенный

PHP Дата и время PHP Подключение файлов PHP Обработка файлов PHP Файл открыть/читать PHP Файл создать/записать PHP Файл Загрузить PHP Куки PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Callback функции 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 Получить последний ID MySQL Вставить несколько записей MySQL Подготовленные инструкции MySQL Выбрать данные MySQL Where MySQL Order By MySQL Удаление данных MySQL Обновление данных MySQL Ограничение данных

PHP XML

PHP XML Парсеры PHP SimpleXML Парсер PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Интро AJAX PHP AJAX База данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры PHP Компилятор PHP Викторина PHP Упражнения PHP Сертификат

PHP Справочник

PHP Обзор PHP Массив PHP Календарь PHP Дата PHP Каталог PHP Ошибка PHP Исключение PHP Файловая система PHP Фильтр PHP FTP PHP JSON PHP Ключевые слова PHP Libxml PHP Почта PHP Математика PHP Разное PHP MySQLi PHP Сеть PHP Output Control PHP RegEx PHP SimpleXML PHP Поток PHP Строка PHP Обработка переменных PHP XML Парсер PHP Zip PHP Часовые пояса

PHP. Уроки для начинающих

PHP ООП - Классы и объекты


Класс является шаблоном для объектов, а объект является экземпляром класса.


ООП Кейс

Пусть у нас есть класс с именем Fruit. У Fruit могут быть такие свойства, как имя, цвет, вес и т.д. Мы можем определить такие переменные, как $name, $color и $weight, чтобы хранить значения этих свойств.

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


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

Класс определяется с помощью ключевого слова 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");
?>
Попробуйте сами »

2. Вне класса (путем непосредственного изменения значения свойства):

Пример

<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
?>
Попробуйте сами »

PHP - Ключевое слово instanceof

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

Пример

<?php
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>
Попробуйте сами »