Учебник по 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 ООП — Черты


PHP — что такое черты?

PHP поддерживает только одиночное наследование: дочерний класс может наследовать только от одного родителя.

Итак, что, если классу нужно наследовать несколько вариантов поведения? Черты ООП решают эту проблему.

Черты используются для объявления методов, которые можно использовать в нескольких классах. Черты могут иметь методы и абстрактные методы, которые можно использовать в нескольких классах, а методы могут иметь любой модификатор доступа (открытый, закрытый или защищенный).

Черты объявляются с помощью trait ключевого слова:

Синтаксис

<?php
trait TraitName {
  // some code...
}
?>

Чтобы использовать черту в классе, используйте use ключевое слово:

Синтаксис

<?php
class MyClass {
  use TraitName;
}
?>

Давайте посмотрим на пример:

Пример

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Объяснение примера

Здесь мы объявляем один трейт: message1. Затем мы создаем класс: Добро пожаловать. Класс использует трейт, и все методы трейта будут доступны в классе.

Если другим классам нужно использовать функцию msg1(), просто используйте трейт message1 в этих классах. Это уменьшает дублирование кода, поскольку нет необходимости повторно объявлять один и тот же метод снова и снова.



PHP — использование нескольких признаков

Давайте посмотрим на другой пример:

Пример

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

Объяснение примера

Здесь мы объявляем два трейта: message1 и message2. Затем мы создаем два класса: Welcome и Welcome2. Первый класс (Welcome) использует трейт message1, а второй класс (Welcome2) использует трейты message1 и message2 (несколько трейтов разделяются запятой).