Лучшие проекты для портфолио на PHP: от новичка до профи

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Почему портфолио на PHP — ваш золотой билет?

Мир IT меняется каждые полгода, но PHP остаётся крепким середняком: на нём работает 78% всех сайтов с известной серверной стороной (включая WordPress, Laravel и Symfony). Если вы учите PHP и хотите получить оффер, одно резюме не сработает — нужны проекты, которые можно показать и объяснить на собеседовании.

В этой статье я собрал 7 идей для портфолио на PHP — от простых скриптов до полноценных микросервисов. Каждый проект сопровождается реальным кодом и объяснением, почему именно он прокачает вашу карьеру. Погнали!

1. Мини-блог на чистом PHP (без фреймворков)

Зачем это нужно?

Показать, что вы понимаете, как работают запросы, сессии и базы данных без магии фреймворка. Это база, которую спрашивают на каждом собеседовании middle-уровня.

Что реализовать?

  • Регистрация/авторизация (хэширование паролей, сессии)
  • CRUD для постов (создание, редактирование, удаление)
  • Простейший роутинг (один index.php как точка входа)
  • Вывод списка постов с пагинацией

Пример кода: простой роутер

// index.php — точка входа
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

switch ($uri) {
    case '/':
        require 'controllers/home.php';
        break;
    case '/login':
        require 'controllers/login.php';
        break;
    case '/register':
        require 'controllers/register.php';
        break;
    default:
        http_response_code(404);
        echo '404 Not Found';
        break;
}

Этот код показывает, что вы умеете работать с суперглобальными массивами и строить архитектуру руками. Для портфолио — идеальный старт.

2. REST API для заметок (Laravel или Slim)

Почему API?

Современные проекты всё чаще строятся на микросервисах и SPA. Умение писать чистый REST API — навык, который нужен в 90% вакансий PHP-разработчика.

Что должно быть в проекте?

  • Маршруты: GET, POST, PUT, DELETE для ресурса "Note"
  • Валидация входящих данных
  • JWT-аутентификация (или API ключи)
  • Документация в Swagger/OpenAPI

Пример: контроллер на Laravel

// app/Http/Controllers/NoteController.php
class NoteController extends Controller
{
    public function index()
    {
        return Note::where('user_id', auth()->id())->get();
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'title' => 'required|string|max:255',
            'content' => 'required|string',
        ]);

        $note = auth()->user()->notes()->create($validated);

        return response()->json($note, 201);
    }

    public function destroy($id)
    {
        $note = Note::findOrFail($id);
        $note->delete();
        return response()->json(null, 204);
    }
}

Такой проект для портфолио на PHP сразу показывает, что вы умеете работать с Eloquent, middleware и REST-принципами. Плюс можно докинуть тесты на PHPUnit.

3. Telegram-бот для отслеживания курса валют

Почему бот?

Telegram-боты — это тренд. Их любят заказчики, они просты в деплое (можно запустить на бесплатном хостинге) и отлично демонстрируют работу с внешними API.

Что нужно сделать?

  • Подключиться к BotFather, получить токен
  • Написать обработчик команд /start, /rate USD, /rate EUR
  • Парсить курс с сайта ЦБ РФ или любого открытого API
  • Кешировать результат (чтобы не дёргать API каждую секунду)

Пример кода: получение курса

function getExchangeRate($currency) {
    $cacheFile = __DIR__ . "/cache/{$currency}.json";
    if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) {
        return json_decode(file_get_contents($cacheFile), true);
    }

    $url = "https://api.exchangerate-api.com/v4/latest/{$currency}";
    $data = json_decode(file_get_contents($url), true);

    if (!is_dir(__DIR__ . '/cache')) {
        mkdir(__DIR__ . '/cache', 0777, true);
    }
    file_put_contents($cacheFile, json_encode($data));

    return $data;
}

Этот проект показывает работу с cURL/file_get_contents, кешированием и JSON. Идеально для новичка, который хочет быстро получить результат.

4. Система управления задачами (Kanban-доска)

Зачем такой проект?

Это классика enterprise-разработки. Показывает, что вы умеете проектировать базу данных, работать с AJAX и строить сложные связи между таблицами.

Суть проекта:

  • Пользователи, проекты, задачи, статусы (To Do, In Progress, Done)
  • Drag & Drop на фронте (jQuery UI или Alpine.js)
  • Права доступа (админ, модератор, пользователь)
  • Уведомления по email при смене статуса

Пример: миграция для таблицы задач (Laravel)

Schema::create('tasks', function (Blueprint $table) {
    $table->id();
    $table->foreignId('project_id')->constrained()->onDelete('cascade');
    $table->foreignId('user_id')->constrained();
    $table->string('title');
    $table->text('description')->nullable();
    $table->enum('status', ['todo', 'in_progress', 'done'])->default('todo');
    $table->integer('priority')->default(0);
    $table->timestamps();
});

Такой проект для портфолио на PHP показывает, что вы умеете проектировать не только код, но и саму систему.

5. Парсер интернет-магазина (Scraper)

Кому это нужно?

Парсинг — одна из самых востребованных задач на фрилансе. Заказчики платят за сбор данных о конкурентах, ценах, отзывах. Плюс это отличная практика работы с регулярными выражениями и DOM.

Что должно быть?

  • Ввод URL товара или категории
  • Извлечение названия, цены, описания, изображений
  • Сохранение в CSV или базу данных
  • Обработка ошибок (таймауты, капча, блокировки)

Пример: парсинг с помощью cURL и DOMDocument

$html = file_get_contents('https://example.com/product/123');
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);

$title = $xpath->query('//h1[@class="product-title                

Блоги

Рекомендаций по книгам