offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→

Учебник по ООП и MVC в PHP

Основы

папка basis
Введение Свойства Методы Параметры метода Обращение к свойствам через $this Запись свойств через $this Методы и $this public private Конструктор Геттеры сеттеры Свойства только для чтения Один класс - один файл Объекты в массиве Начальные значения свойств в конструкторе Начальные значения свойств при объявлении Необязательность значений свойств Применение начальных значений в классе Student Применение начальных значений в классе Arr Свойство из переменной Свойства объекта из массива Свойства объекта из ассоциативного массива Имя свойства из функции Имя свойства из другого объекта Имя свойства из метода другого объекта Метод из переменной Метод сразу после создания Цепочки методов в классе Класс как набор методов Константы класса Обращение к константам внутри класса

Наследование

папка inheritance
intro Введение Наследование классов несколькими потомками Наследование классов от наследников Модификатор protected Перезапись методов родителя Вызов методов родителя в потомке Вызов конструктора родителя

Объекты

Передача по ссылке Использование объектов в другом классе Передача объектов параметрами Сравнение объектов Сравнение объектов с помощью функции in_array Оператор instanceof Оператор instanceof и наследование Применение оператора instanceof Контроль типов

Static

папка static
Статические методы Статические методы внутри класса Статические свойства Статическое свойство внутри класса Объект со статическими свойствами и методами Несколько объектов со статическими свойствами и методами Статические методы и $this Полиморфизм

Функции

папка functions
разбить на уроки Функции для ООП

Abstract

папка 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 Установка фреймворка Структура папок фреймворка Контроллеры Действия Роутинг Параметры в роутах Применение параметров в роутах Представления Передача данных в представление Передача массивов в представление Практика на контроллеры и представления Шаблоны Тайтл страницы Ресурсы Модели Практика работы с моделями Пример применения

Разработка MVC фреймворка

Начало разработки Точка входа Настройка htaccess Автозагрузка классов Работа с роутами Разработка роутера Использование роутера Реализация роутера Контроллеры Диспетчер Представление Метод renderView Метод renderLayout Итоговый код Модели Родитель всех моделей