PSR-4 и Composer: автозагрузка классов в PHP правильно

JavaScript · 19.07.2026 · 2 мин чтения

PSR-4 — современный стандарт автозагрузки классов в PHP. Composer автоматически генерирует оптимизированный автозагрузчик для вашего проекта.

Схема PSR-4 автозагрузки с Composer в PHP

PSR-4 — это стандарт автозагрузки классов в PHP, который описывает, как файлы классов должны соотноситься с пространствами имён. Вместе с Composer это создаёт мощную систему управления зависимостями.

Что такое PSR-4 и зачем он нужен?

До появления автозагрузки разработчики использовали множество require и include, что было неудобно и трудоёмко. PSR-4 решает эту проблему, позволяя загружать классы автоматически по их пространству имён.

Настройка PSR-4 через Composer

В файле composer.json нужно указать секцию autoload:

{
 'name': 'myapp/php-project',
 'description': 'Пример PSR-4 автозагрузки',
 'autoload': {
 'psr-4': {
 'App\\': 'src/'

 },
 'require': {}
}

Это означает, что классы из пространства имён App будут находиться в папке src/.

Структура папок и файлов

PSR-4 строго определяет соответствие между пространством имён и путём к файлу:

  • Класс App\User\Profile → файл src/User/Profile.php
  • Класс App\Http\Controllers\AuthController → файл src/Http/Controllers/AuthController.php
  • Класс App\Models\UserModel → файл src/Models/UserModel.php

Пример структуры проекта

project/
├── composer.json
├── src/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ └── AuthController.php
│ │ └── Middleware/
│ │ └── AuthMiddleware.php
│ ├── Models/
│ │ └── UserModel.php
│ └── Services/
│ └── EmailService.php
├── tests/
│ └── UserModelTest.php
└── public/
 └── index.php

Создание файлов классов

Класс UserModel в src/Models/UserModel.php

<?php
namespace App\Models;

class UserModel {
 private \PDO db;
 
 public function __construct(\PDO db) {
 this->db = db;

 
 public function getUsers(): array {
 stmt = this->db->query('SELECT * FROM users');
 return stmt->fetchAll(\PDO::FETCH_ASSOC);


?>

Класс AuthController в src/Http/Controllers/AuthController.php

userModel=userModel;
 
this−>emailService=emailService;

 
 public function login(string 
email,stringpassword): bool {
 
users=this->userModel->getUsers();
 // Логика аутентификации
 return true;


?>

Автозагрузка в index.php

login('user@example.com', 'password');
?>

Оптимизация автозагрузки

Composer может сгенерировать оптимизированный автозагрузчик для продакшена:

composer dump-autoload --optimize
composer dump-autoload --classmap-authoritative

Пространства имён и use

Пространства имён помогают избегать конфликтов классов. Используйте use для импорта классов:

userModel=userModel;
 
this−>emailService=emailService;
 
this−>logger=logger;


?>

Итог

PSR-4 и Composer делают организацию PHP-кода простой и логичной. Автозагрузка по стандарту PSR-4 — это современный подход, который используется во всех крупных фреймворках.

JavaScript Frontend Linting Webpack
← Ко всем статьям

Читайте также