PHPackages                             pianissimo-php/framework - 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. pianissimo-php/framework

AbandonedArchivedLibrary[Framework](/categories/framework)

pianissimo-php/framework
========================

The Pianissimo PHP framework.

111PHP

Since Aug 21Pushed 6y agoCompare

[ Source](https://github.com/pianissimo-php/framework)[ Packagist](https://packagist.org/packages/pianissimo-php/framework)[ RSS](/packages/pianissimo-php-framework/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

The Framework Component
=======================

[](#the-framework-component)

The Framework Component 'glues' all components together into a framework.

##### WARNING: this component is in development and unstable to use.

[](#warning-this-component-is-in-development-and-unstable-to-use)

Core
----

[](#core)

It is common to use a Core class located in `src/Core.php` which extends `Pianissimo\Component\Framework\Core`. This allows you to configure the Core to the requirements of the project.

### Container

[](#container)

The container is booted in the `handle()` method. When the container is booted, the container is initialized and built.

The container is an instance of the `ContainerBuilder` class. A container loader, an instance of a `Pianissimo\Component\Config\DelegatingLoader` is used to load the service definitions. The `services.yaml` file of the Framework component is loaded by the `DelegatingLoader`.

If the `configureContainer()` method exists in the projects' Core class, it is called with the `DelegatingLoader` as an argument:

```
public function configureContainer(DelegatingLoader $loader): void
{
    $configDir = $this->getProjectDir() . DIRECTORY_SEPARATOR . 'config';

    $loader->load($configDir . DIRECTORY_SEPARATOR . 'services.yaml');
}
```

In this way one or more configuration files with service definitions can be loaded via the `configureContainer()` method by adding them to the container loader.

### Service definitions

[](#service-definitions)

The Framework Component provides a `YamlFileLoader` which allows you to use YAML to define your service definitions. The file for the service definitions is located by default in `config/services.yaml`.

You can define a service like this:

```
services:
  entity_manager:
    class: App\Manager\EntityManager
    autowire: true
```

or you can define your services without autowiring them:

```
services:
  mailer_service:
    class: App\Service\MailerService
    arguments: ['@entity_manager', 'SMTP']
```

As you see in the example above you can use an `@` character to refer to a service definition.

Use the `resource` key to define multiple services according to the `glob` pattern.

```
services:
  App\Controller:
    resource: '../src/Controller/*'
    tags: ['controller']
```

### Controller resolver

[](#controller-resolver)

After the container has been booted in the `handle()` method, the `ControllerResolver` is called. The `AnnotatedRouteLoader` that implements the `Pianissimo\Component\Routing\RouteLoaderInterface` is used to load the - as the name suggests - annotated routes, defined in the controllers. The `RouterControllerCompilerPass` is used to add the controller classes to the `AnnotatedRouteLoader`.

Class `Pianissimo\Component\Framework\Router` that implements the `Pianissimo\Component\Routing\RouterInterface`is used to match the route to a controller method.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/2b1817da2d3b1b8aec540281e06eb766a9ee9f2655f92ff6538b213b3cee2bb2?d=identicon)[pianissimo-php](/maintainers/pianissimo-php)

---

Top Contributors

[![jonmldr](https://avatars.githubusercontent.com/u/33514542?v=4)](https://github.com/jonmldr "jonmldr (46 commits)")

### Embed Badge

![Health badge](/badges/pianissimo-php-framework/health.svg)

```
[![Health](https://phpackages.com/badges/pianissimo-php-framework/health.svg)](https://phpackages.com/packages/pianissimo-php-framework)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[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.

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

A simple API extension for DateTime.

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

PHPackages © 2026

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