9.48M
Category: programmingprogramming

14 Презентация_Структура MVC и разделение логики в PHP

1.

Казахский университет технологии и бизнеса им. К. Кулажанова
Факультет “Инжиниринг и информационные технологии”
Кафедра “Информационные технологии”
Наименование курса:
«Проектирование и разработка
Web - приложений»
Турсынбай Нургуль Файзуллаевна
Сеньор- лектор
e-mail: Nurgul.tursynbay@mail.ru
Астана 2025

2.

Казахский университет технологии и бизнеса им. К.Кулажанова
Архитектура MVC в PHP:
разделение логики приложения
Приветствую студентов курса по веб-разработке на PHP! Сегодня мы
погрузимся в архитектурный шаблон MVC, который является
фундаментальным для создания масштабируемых и поддерживаемых
веб-приложений. Мы рассмотрим, как правильно структурировать код,
разделять логику и эффективно организовывать взаимодействие между
компонентами приложения.
BS

3.

Казахский университет технологии и бизнеса им. К.Кулажанова
Цели и задачи изучения MVC
Основная цель
Изучить принцип разделения логики в PHP-приложениях для
повышения читаемости, поддержки и расширяемости кода через
архитектурный шаблон MVC.
Ключевые задачи
Освоить принципы MVC (Model-View-Controller)
Понять назначение и взаимодействие каждого компонента
Изучить приёмы организации кода вручную и в рамках
фреймворков
Проанализировать преимущества структурированного подхода
к разработке

4.

Казахский университет технологии и бизнеса им. К.Кулажанова
Что такое MVC: определение и принципы
MVC (Model-View-Controller) — архитектурный шаблон проектирования, разделяющий приложение на три взаимосвязанных
компонента с чётко определёнными функциями и зонами ответственности.
Представление (View)
Отвечает за отображение данных
2
которые получают и визуализируют
Модель (Model)
данные без содержания сложной
Компонент, отвечающий за бизнес-
логику приложения и
взаимодействие с базой данных.
Содержит методы для получения,
обработки и сохранения данных.
пользователю. Это HTML-шаблоны,
логики.
1
Контроллер (Controller)
Обрабатывает входящие запросы,
взаимодействует с моделью и
выбирает представление для
отображения результатов
пользователю.

5.

Казахский университет технологии и бизнеса им. К.Кулажанова
Преимущества разделения логики в MVC
Шаблон MVC предлагает структурированный подход к
разработке, который решает многие проблемы монолитных
приложений. Разделение кода на логические компоненты
Ключевые преимущества
специалистами
значительно улучшает организацию проекта и процесс
разработки.
Повышенная модульность и переиспользуемость
кода
«Хороший дизайн отделяет то, что меняется, от того, что
остается неизменным» — принцип проектирования,
Независимая разработка компонентов разными
Упрощение тестирования благодаря изоляции
компонентов
полностью реализованный в MVC.
Более простое масштабирование и поддержка
приложения
Четкая структура проекта, понятная для новых
разработчиков

6.

Казахский университет технологии и бизнеса им. К.Кулажанова
Реализация модели (Model) в PHP
Модель представляет бизнес-логику приложения и отвечает за работу с данными. Она содержит методы для взаимодействия с базой данных и обработки информации.
class User {
{
private $db;
$this->db = $database;
getUserById($id) {
public function __construct($database)
}
public function
// SQL-запрос для получения пользователя
$query = "SELECT * FROM users WHERE id = :id";
$stmt = $this->db-
>prepare($query);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetch(PDO::FETCH_ASSOC);
}
public function saveUser($userData) {
пользователя
}}
// Логика сохранения
Характеристики хорошей модели
Инкапсулирует всю логику работы с данными
Не содержит HTML или элементов представления
Не зависит от контроллера и представления
Реализует бизнес-правила и валидацию данных
Может использоваться в разных частях приложения

7.

Казахский университет технологии и бизнеса им. К.Кулажанова
Реализация представления (View) в PHP
Представление отвечает за отображение данных пользователю. Это обычно HTML-шаблоны с внедрёнными PHP-переменными,
которые получают данные от контроллера.
Принципы хорошего представления
Минимум или отсутствие бизнес-логики
Фокус на представлении данных пользователю
Использование шаблонизации для повторяющихся
элементов
Обработка простых условий отображения
Корректная обработка и экранирование данных для
предотвращения XSS-атак
Профиль пользователя
Имя:
Email:
Пользователь не найден

8.

Казахский университет технологии и бизнеса им. К.Кулажанова
Реализация контроллера (Controller) в PHP
Контроллер является связующим звеном между моделью и представлением. Он обрабатывает HTTP-
запросы, вызывает нужные методы модели и передаёт данные в представление.
Получение запроса
Контроллер анализирует входящий HTTP-запрос, извлекая необходимые параметры и данные формы.
Обращение к модели
На основе полученных данных контроллер вызывает соответствующие методы модели для работы
с бизнес-логикой.
$userModel = new User($database);$userData = $userModel->getUserById($_GET['id']);
Передача в представление
Контроллер подготавливает данные и передаёт их в представление для отображения
результата пользователю.
// Передача данных в представлениеrequire_once 'views/user_view.php';

9.

Казахский университет технологии и бизнеса им. К.Кулажанова
Структура проекта MVC на PHP
Правильная организация файлов и каталогов – важный аспект реализации MVC. Рассмотрим типичную структуру
проекта без использования фреймворка.
Корневая директория
project/├── index.php
// Точка входа├── config/
Контроллеры├── models/
// Модели├── views/
// Конфигурации├── controllers/
//
// Представления└── public/
// Статические
файлы
Файл маршрутизации
// index.phprequire_once 'config/config.php';// Простая маршрутизация$route = $_GET['route'] ?? 'home';switch
($route) {
case 'user':
UserController();
require_once 'controllers/UserController.php';
$controller->show($_GET['id'] ?? null);
require_once 'controllers/HomeController.php';
>index();}
break;
$controller = new
// Другие маршруты
$controller = new HomeController();
default:
$controller-

10.

Казахский университет технологии и бизнеса им. К.Кулажанова
Практический пример полной MVC-структуры
Рассмотрим простое приложение для управления списком пользователей, чтобы увидеть, как все компоненты MVC взаимодействуют между собой.
Модель: models/User.php
class User { private $db;
public function __construct($db) {
$this->db = $db;
>db->query($query);
return $stmt->fetchAll(PDO::FETCH_ASSOC); }}
}
public function getAll() {
$query = "SELECT * FROM users";
$stmt = $this-
Контроллер: controllers/UserController.php
class UserController { private $userModel;
public function __construct() {
require_once 'models/User.php';
$db = require 'config/database.php';
new User($db); }
public function index() {
$users = $this->userModel->getAll();
require_once 'views/users_list.php'; }}
Представление: views/users_list.php
Пользователи системы
ID
Имя
Email
$this->userModel =

11.

Казахский университет технологии и бизнеса им. К.Кулажанова
Популярные PHP-фреймворки с MVC-архитектурой
Многие современные PHP-фреймворки используют архитектуру MVC или её вариации. Они предоставляют готовые
инструменты и структуру для быстрого создания приложений с разделённой логикой.
Laravel
Symfony
Самый популярный PHP-фреймворк с элегантным
Мощный и гибкий фреймворк, используемый во многих
синтаксисом и богатым набором инструментов.
крупных проектах. Предлагает набор
Реализует паттерн MVC с дополнительными
переиспользуемых компонентов и следует строгим
абстракциями, такими как фасады и сервис-
стандартам разработки. Часто используется в
контейнеры. Отличная документация и активное
корпоративных решениях.
сообщество.
CodeIgniter
Slim
Лёгкий и быстрый фреймворк с минимальной
Микрофреймворк для создания небольших API и веб-
конфигурацией. Имеет небольшой размер и хорошую
приложений. Позволяет быстро реализовать
производительность, что делает его подходящим для
маршрутизацию и простую MVC-структуру без лишней
небольших проектов и проектов с ограниченными
функциональности. Идеален для изучения базовых
ресурсами.
принципов MVC.

12.

Казахский университет технологии и бизнеса им. К.Кулажанова
Преимущества и недостатки архитектуры MVC
Преимущества MVC
Недостатки MVC
Разделение обязанностей между компонентами
Избыточность для небольших проектов, где сложность
повышает чистоту кода и упрощает его поддержку.
структуры может превысить пользу от разделения.
Возможность параллельной разработки разных
компонентов увеличивает эффективность командной
Более высокий порог вхождения для новичков из-за
работы.
необходимости понимать архитектурные концепции.
Повышенная тестируемость благодаря изоляции
Требует строгой дисциплины при разработке для
компонентов друг от друга.
соблюдения принципов разделения.
Более простое масштабирование и модификация
Потенциальная сложность навигации по коду из-за
функциональности без полной переработки системы.
распределения логики по разным файлам.

13.

Казахский университет технологии и бизнеса им. К.Кулажанова
Закрепление знаний и вопросы для самопроверки
Для закрепления полученных знаний рекомендуется ответить на следующие вопросы и выполнить практические задания по
реализации MVC-структуры в собственном проекте.
Вопросы для самопроверки
Практическое задание
1.
Что означает аббревиатура MVC и какие компоненты
Создайте простое PHP-приложение с MVC-структурой для
она включает?
управления списком задач (Todo List). Реализуйте
2. Какую роль выполняет контроллер в архитектуре MVC?
3. Чем отличается модель от представления с точки
зрения ответственности?
4. Какие преимущества даёт архитектура MVC в
долгосрочных проектах?
5. Как можно реализовать структуру MVC вручную без
использования фреймворков?
следующие функции:
Отображение списка всех задач
Добавление новой задачи
Отметка задачи как выполненной
Удаление задачи
Используйте SQLite для хранения данных и создайте
собственную систему маршрутизации.
В следующей лекции мы рассмотрим более сложные аспекты архитектуры MVC и изучим конкретные примеры её реализации в
популярных PHP-фреймворках. Также обсудим расширения шаблона MVC, такие как MVVM и MVP.

14.

Казахский университет технологии и бизнеса им. К.Кулажанова
Спасибо за внимание!
English     Русский Rules