PHPackages                             voral/joke - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. voral/joke

ActiveLibrary[Framework](/categories/framework)

voral/joke
==========

A minimal PHP microframework with manual routing and dependency injection container.

1.2.0(2mo ago)091MITPHPPHP ^8.4CI passing

Since Jan 16Pushed 2mo agoCompare

[ Source](https://github.com/Voral/joke)[ Packagist](https://packagist.org/packages/voral/joke)[ RSS](/packages/voral-joke/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (9)Versions (6)Used By (1)

Joke — Микрофреймворк для PHP
=============================

[](#joke--микрофреймворк-для-php)

[EN](#joke--a-micro-framework-for-php)

---

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/9d05e8faf0896339fe32726f4c3d04abdb32dcea8b4c2b9e4f3a9ae5eddb1b8f/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f566f72616c2f6a6f6b652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Voral/joke/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/6a01a17e316c00e184d2ae77d41e3efafce58bba6f7475ef3484d0f55cdb7429/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f566f72616c2f6a6f6b652f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Voral/joke/?branch=master)[![PHP Tests](https://github.com/Voral/joke/actions/workflows/php.yml/badge.svg)](https://github.com/Voral/joke/actions/workflows/php.yml/badge.svg)

---

Joke — это учебный микрофреймворк с ручной маршрутизацией и встроенным DI-контейнером. Он разрабатывается в рамках образовательного челленджа и не претендует на конкуренцию с промышленными решениями, такими как Laravel или Symfony.

Несмотря на скромный функционал, реализуемые компоненты стремятся быть надёжными, тестируемыми и пригодными для использования в реальных проектах — в том числе в обучающих или прототипных задачах.

По условиям челенджа: не использовать существующие решения (кромe composer, PHPUnit, [voral/version-increment](https://github.com/Voral/vs-version-incrementor))

Требования
----------

[](#требования)

- PHP 8.4+
- Composer

Реализованная функциональность
------------------------------

[](#реализованная-функциональность)

- Ручная маршрутизация HTTP-запросов
- DI-контейнер с поддержкой автовайринга параметров
- Система middleware (блокирующие и неблокирующие)
- Управление сессиями (включая поддержку «неблокирующего» режима — данные сессии считываются в начале обработки запроса, после чего сессия немедленно закрывается, позволяя другим запросам от того же пользователя работать параллельно без ожидания завершения текущего.)
- Обработка ошибок и исключений

Как начать
----------

[](#как-начать)

Самый простой способ начать — использовать официальный [скелетон](../skeleton/minimal.md):

```
composer create-project voral/joke-minimal my-app
cd my-app
composer run dev
```

Приложение будет доступно по адресу:

Документация
------------

[](#документация)

Документация по фреймворку размещена [здесь](./docs/index.md)

Основные этапы челенджа
-----------------------

[](#основные-этапы-челенджа)

- **Создание фреймворка**
    - Реализация маршрутизации
    - Реализация сервисный контейнер
    - Консольная система команд
    - Авторизация
    - Валидация данных
    - Обработка ошибок
    - Логирование
    - Создание построителя SQL запросов
    - Миграции
    - Настраиваемое окружение через .env файл
- **Создание шаблонизатора**
    - Создание базового шаблонизатора HTML
    - Рендер Markdown файлов для быстрого создания документационных сайтов из .md файлов.
    - Рендер Swagger yaml файлов для автоматического отображения OpenAPI-спецификаций без внешних UI (например, без Swagger UI)
- **Создание приложения форума**
- **Создание скелетонов**
    - REST API приложения
    - Приложения веб представления Markdown файлов

---

Joke — A Micro Framework for PHP
================================

[](#joke--a-micro-framework-for-php)

Joke is an educational microframework featuring manual routing and a built-in DI container. It is developed as part of a learning challenge and is not intended to compete with production-grade frameworks like Laravel or Symfony.

Despite its limited scope, the implemented components aim to be reliable, testable, and suitable for real-world use—even in educational or prototyping scenarios.

As per the challenge rules, no existing solutions may be used except for Composer, PHPUnit, and [voral/version-increment](https://github.com/Voral/vs-version-incrementor).

Requirements
------------

[](#requirements)

- PHP 8.4+
- Composer

Implemented Features
--------------------

[](#implemented-features)

- Manual HTTP request routing
- DI container with automatic parameter wiring
- Middleware system (blocking and non-blocking)
- Session management, including **non-blocking mode** — session data is read at the beginning of request processing and the session is immediately closed, allowing concurrent requests from the same user to proceed without waiting for the current request to finish
- Error and exception handling

Getting Started
---------------

[](#getting-started)

The easiest way to get started is to use the official [skeleton](../skeleton/minimal.md):

```
composer create-project voral/joke-minimal my-app
cd my-app
composer run dev
```

Your application will be available at:

Challenge Roadmap
-----------------

[](#challenge-roadmap)

- **Framework Core**

    - Implement routing
    - Implement service container
    - Console command system
    - Authentication
    - Data validation
    - Error handling
    - Logging
    - SQL query builder
    - Database migrations
    - Environment configuration via `.env` file
- **Template Engine**

    - Basic HTML template engine
    - Render Markdown files for quickly generating documentation sites from `.md` files
    - Render Swagger YAML files to display OpenAPI specifications without external UIs (e.g., without Swagger UI)
- **Build a Forum Application**
- **Create Project Skeletons**

    - For REST API applications
    - For documentation sites based on Markdown files

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance87

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~16 days

Total

4

Last Release

74d ago

Major Versions

0.0.1 → 1.0.02026-01-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/ce4dfd67b12e198becd71253723d0c83044cb4689b735f2fd4eee4ac191c41ec?d=identicon)[Voral](/maintainers/Voral)

---

Top Contributors

[![Voral](https://avatars.githubusercontent.com/u/327165?v=4)](https://github.com/Voral "Voral (170 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/voral-joke/health.svg)

```
[![Health](https://phpackages.com/badges/voral-joke/health.svg)](https://phpackages.com/packages/voral-joke)
```

###  Alternatives

[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M532](/packages/laravel-passport)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

712181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)[laravel/pail

Easily delve into your Laravel application's log files directly from the command line.

91545.3M590](/packages/laravel-pail)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
