PHPackages                             bermudaphp/skeleton - 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. bermudaphp/skeleton

ActiveProject[Framework](/categories/framework)

bermudaphp/skeleton
===================

Bermuda app skeleton. PHP psr micro-framework

v3.0.0(1y ago)8102MITPHPPHP ^8.4

Since Mar 26Pushed 1y ago2 watchersCompare

[ Source](https://github.com/bermudaphp/skeleton)[ Packagist](https://packagist.org/packages/bermudaphp/skeleton)[ RSS](/packages/bermudaphp-skeleton/feed)WikiDiscussions v3 Synced 6d ago

READMEChangelog (4)Dependencies (11)Versions (7)Used By (0)

Install
=======

[](#install)

```
composer create-project bermudaphp/skeleton
```

Cкрипт установки предложит выбрать реализацию psr-7 (по умолчанию Nyholm/psr7) и установить [шаблонизатор](https://github.com/bermudaphp/templater) (адаптер для пакета [league/plates](https://platesphp.com/))

После установки вы получите основанный на psr-15 диспатчере скелет приложения с [DI контрейнером](https://php-di.org/), HTTP маршрутизацией и поддержкой командной строки.

Quick start
===========

[](#quick-start)

Зарегистрируйте машруты в файле 'config/routes.php'. Описание интерфейса роутера можно найти [здесь.](https://github.com/bermudaphp/router)

```
$routes->addRoute(
    RouteRecord::get('hello.action', '/hello/{name}', static function(string $name) use ($app): ResponseInterface {
        return $app->responde(200, 'Hello, ' . $name);
    })
);
```

Зарегистрируйте глобальные middleware в файле 'config/pipeline.php'. Реализация диспатчера работает по принципу FIFO

```
$app->pipe(MyFirstMiddleware::class);
$app->pipe(\Bermuda\Router\Middleware\MatchRouteMiddleware::class);
$app->pipe(MyThirdMiddleware::class);
$app->pipe(\Bermuda\Router\Middleware\DispatchRouteMiddleware::class);
```

Добавьте зависимости в файл 'config/config.php' и сконфигурируйте DI container

```
return Config::merge(
    new Bermuda\App\ConfigProvider,
    new Bermuda\HTTP\ConfigProvider,
    new Bermuda\Detector\ConfigProvider,
    new Bermuda\PSR7ServerFactory\ConfigProvider,
    new Bermuda\Router\ConfigProvider,
    new Bermuda\Pipeline\ConfigProvider,
    new Bermuda\MiddlewareFactory\ConfigProvider,
    new Bermuda\ErrorHandler\ConfigProvider,

    new PhpFileProvider('./config/autoload/{{,*.}global,{,*.}local}.php'),
    new PhpFileProvider('./config/development.config.php'),

    // App config provider
    new class extends ConfigProvider {

        /**
         * An associative array that maps a service name to a factory class name, or any callable.
         * Factory classes must be instantiable without arguments, and callable once instantiated (i.e., implement the __invoke() method).
         * @return array
         */
        protected function getFactories(): array
        {
            return [
                BootstrapperInterface::class => static function(ContainerInterface $container): Bootstrapper {
                    return Bootstrapper::withDefaults($container)->add(new class implements BootstrapperInterface {
                        public function boot(AppInterface $app): AppInterface
                        {
                            // Бутстрап приложения выполнится после конфигурации контейнера
                            // здесь можно зарегистрировать алиасы для функций экземпляра приложения или установить новые сущности в контейнер
                            // или все, что необходимо cделать до запуска приложения, но после конфигурации контейнера
                            $app->registerCallback('myCallback', static fn() => 'callback');
                            $app->myCallback() === 'callback' // true
                            $app->set('my-second-dependency', true);
                            $app->extend(MyFirstMiddleware, static function(MyFirstMiddleware $m, AppInterface $app) {
                              return new MyFirstMiddlewareDecorator($m, $app->get('my-second-dependency'));
                            });
                            $app->get(MyFirstMiddleware::class) instanceof MyFirstMiddlewareDecorator // true
                        }
                    });
                },

                MyService::class => static fn(ContainerInterface $container) => new MyService($container->get(MyDependency::class)),
            ];
        }
    },
);
```

Для запуска консольного приложения необходимо создать команду отнаслдовавшись от класса Console\\Commands\\Command или реализовать интерфейс Bermuda\\App\\Console\\CommandInterface, после чего зарегистрировать команду в файле 'config/commands.php' Базовая реализация консольного приложения работает поверх пакета [symfony/console](https://github.com/symfony/console)

```
class MyCommand extends Command
{
    public function getName(): string
    {
        return 'myCommand';
    }

    public function getDescription(): string
    {
        return 'MyCommand description';
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // command logics
        return self::SUCCESS;
    }
}
$app->pipe(MyCommands::class);
```

После чего команда будет доступна по вызову

```
php bin/console myCommand
```

или

```
console myCommand
```

Если вы используете Windows

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance46

Moderate activity, may be stable

Popularity15

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity66

Established project with proven stability

 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 ~148 days

Total

6

Last Release

406d ago

Major Versions

v1.0.1 → v2.x-dev2024-05-23

v2.0 → v3.0.02025-04-04

PHP version history (3 changes)v1.0PHP ^8.1

v2.x-devPHP ^8.3

v3.0.0PHP ^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20490712?v=4)[Andrey Shelamkoff](/maintainers/Shelamkoff)[@Shelamkoff](https://github.com/Shelamkoff)

---

Top Contributors

[![Shelamkoff](https://avatars.githubusercontent.com/u/20490712?v=4)](https://github.com/Shelamkoff "Shelamkoff (395 commits)")

---

Tags

bermudaframeworkmiddleware-dispatchersmiddleware-frameworkmiddleware-pipelinephp-frameworkphp-micro-frameworkphp81psr-11psr-15psr-7psr-frameworkskeletonpsrpsr-7middlewarePSR-11frameworkpsr-15Skeletonpipelinephp frameworkphp micro frameworkbermuda

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/bermudaphp-skeleton/health.svg)

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

###  Alternatives

[chubbyphp/chubbyphp-framework

A minimal, highly performant middleware PSR-15 microframework built with as little complexity as possible, aimed primarily at those developers who want to understand all the vendors they use.

13544.4k4](/packages/chubbyphp-chubbyphp-framework)[mezzio/mezzio-skeleton

Laminas mezzio skeleton. Begin developing PSR-15 middleware applications in seconds!

12726.2k](/packages/mezzio-mezzio-skeleton)

PHPackages © 2026

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