Обзор проекта
Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 82 из 91.
Задание
ЛегкоДавайте начнем проект Системы управления библиотекой с создания основы — простого класса Book, который будет служить основным объектом предметной области на протяжении всей этой главы.
Вы организуете свой код в двух файлах:
Book.php— Создайте классBook, который представляет библиотечную книгу. Ваша книга должна иметь три свойства:isbn(string),title(string) иauthor(string). Используйте продвижение свойств в конструкторе (constructor promotion), чтобы код оставался чистым. Добавьте метод с именемgetInfo(), который возвращает отформатированную строку с данными книги в следующем формате:"[title] by [author] (ISBN: [isbn])"main.php— Подключите файл Book и оживите свой класс. Вы получите три входных значения: ISBN, название и автора книги. Создайте экземплярBookс этими значениями и выведите результат вызоваgetInfo().
Это первый строительный блок вашей библиотечной системы. В следующих уроках вы расширите этот фундамент, добавив пользователей, функциональность заимствования и административные функции — все это будет работать вместе как единое приложение.
Попробуйте сами
<?php
require_once 'Book.php';
// Чтение входных данных
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
$author = trim(fgets(STDIN));
// TODO: Создать экземпляр Book с введенными значениями
// TODO: Вывести результат вызова getInfo()
?>Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово $thisМетодыСвойстваКонструктор (__construct)Деструктор (__destruct)Итоги — Простой калькулятор4Наследование
Основы наследованияКлючевое слово parent::Переопределение методовКлючевое слово finalАбстрактные классыИтоги — Иерархия сотрудников7Инкапсуляция
Public, Protected, PrivateПодробный разбор модификаторов доступаГеттеры и сеттерыСокрытие данныхConstructor Promotion (8.0)Итоги — Система учета студентов10Продвинутые концепции ООП
Композиция против наследованияВнедрение зависимостейАнонимные классыПеречисления (PHP 8.1)Файберы (PHP 8.1)Глубокое погружение в клонирование объектовГенераторы и итераторы13Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий2Пространства имен и автозагрузка
Введение в пространства именКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerИтоги: структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс против абстрактного классаType Hinting с интерфейсамиИтоги — Калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeИтоги — Кастомная коллекция11Система типов и обработка ошибок
Объявление типовNullable-типыТипы объединения и пересеченияКлассы исключенийИерархия пользовательских исключенийTry, Catch, FinallyИтоги — Валидатор форм14Проект: Управление библиотекой
Обзор проектаКлассы Book и User3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищенные свойстваСвойства Readonly (PHP 8.1)Итоги — Менеджер банковского счета6Полиморфизм
Снова о переопределении методовПолиморфизм через интерфейсыType Hinting и Union TypesПозднее статическое связываниеИтоги — Payment Processor9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy