Учебник по ООП и MVC в PHP
Основы
папка basis
Введение
Свойства
Методы
Параметры метода
Обращение к свойствам через $this
Запись свойств через $this
Методы и $this
public private
Конструктор
Геттеры сеттеры
Свойства только для чтения
Один класс - один файл
Объекты в массиве
Начальные значения свойств в конструкторе
Начальные значения свойств при объявлении
Необязательность значений свойств
Применение начальных значений в классе Student
Применение начальных значений в классе Arr
Свойство из переменной
Свойства объекта из массива
Свойства объекта из ассоциативного массива
Имя свойства из функции
Имя свойства из другого объекта
Имя свойства из метода другого объекта
Метод из переменной
Метод сразу после создания
Цепочки методов в классе
Класс как набор методов
Константы класса
Обращение к константам внутри класса
Наследование
папка inheritance
intro
Введение
Наследование классов несколькими потомками
Наследование классов от наследников
Модификатор protected
Перезапись методов родителя
Вызов методов родителя в потомке
Вызов конструктора родителя
Объекты
Передача по ссылке
Использование объектов в другом классе
Передача объектов параметрами
Сравнение объектов
Сравнение объектов с помощью функции in_array
Оператор instanceof
Оператор instanceof и наследование
Применение оператора instanceof
Контроль типов
Static
папка static
Статические методы
Статические методы внутри класса
Статические свойства
Статическое свойство внутри класса
Объект со статическими свойствами и методами
Несколько объектов со статическими свойствами и методами
Статические методы и $this
Полиморфизм
Функции
папка functionsAbstract
папка abstract
Абстрактные классы
Абстрактные методы
Замечания к применению абстрактных классов и методов
Практика на применение абстрактных классов и методов
Сложный пример применения абстрактных классов и методов
Интерфейсы
Введение в интерфейсы
Практика на применение интерфейсов
Правила именования интерфейсов
Применение интерфейсов
Параметры методов в интерфейсе
Объявление конструктора в интерфейсе
Наследование интерфейсов друг от друга
Интерфейсы и instanceof
Реализация нескольких интерфейсов
Наследование от класса и реализация интерфейса
Константы в интерфейсах
Функции для интерфейсов
Трейты
Введение в трейты
Несколько трейтов
Конфликты методов
Модификаторы доступа
Изменения прав доступа к методам трейта
Приоритет методов
Абстрактные методы
Трейты в трейтах
Функции для трейтов
Магия
Метод __toString
Применение метода __toString
Метод __get
Метод __get и свойства только для чтения
Применение метода __get для несуществующего свойства
Метод __set
Применение метода __set для несуществующего свойства
Проверка свойств при записи методом __set
Практическое применение метода __set
Классы
Реализуем класс Date
Реализуем класс Interval
Реализуем класс File
Реализуем класс Tag
Атрибуты тегов в классе Tag
Цепочки методов в классе Tag
Атрибуты через массив в классе Tag
Атрибуты без значений в классе Tag
Вызов методов сразу после создания объекта
CSS классы в классе Tag
Добавление CSS класса
Удаление CSS класса
Дополнительные методы класса Tag
Окончательный код класса Tag
Класс Image
Реализация класса Image
Перемещение метода open с помощью магического метода __toString
Реализуем класс Link
Активация ссылок в классе Link
Класс HtmlList
Реализуем класс HtmlList
Реализуем класс Form
Реализуем класс Input
Убираем метод open в классе Input
Замечания к реализации класса Input
Реализация сохранения значений после отправки в классе Input
Реализуем класс Submit
Реализуем класс Password
Реализуем класс Hidden
Реализуем класс Textarea
Реализуем класс Checkbox
Реализуем класс Select
Атрибут selected в классе Select
Класс TagHelper
Класс FormHelper
Класс CookieShell
Класс SessionShell
Класс FileManipulator
Класс Validator
Класс DatabaseShell
Пространства имен и автозагрузка
Введение в пространства имен
Синтаксис пространств имен
Подпространства имен
Необязательность совпадения пространства имен с именами папок
Упрощенное обращение
Пространства имен в файлах
Относительные пути в пространстве имен
Команда use
Подключение нескольких классов командой use
Команда use и относительные пути
Псевдонимы классов
Стандартная автозагрузка классов
Правила применения функция spl_autoload_register
Своя автозагрузка классов
Использование MVC фреймворка
Введение в MVC подход
Принципы работы MVC
Установка фреймворка
Структура папок фреймворка
Контроллеры
Действия
Роутинг
Параметры в роутах
Применение параметров в роутах
Представления
Передача данных в представление
Передача массивов в представление
Практика на контроллеры и представления
Шаблоны
Тайтл страницы
Ресурсы
Модели
Практика работы с моделями
Пример применения