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 2w 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 9% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity37

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://avatars.githubusercontent.com/u/49428339?v=4)[Pianissimo](/maintainers/pianissimo-php)[@pianissimo-php](https://github.com/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/dusk

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

1.9k38.6M290](/packages/laravel-dusk)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[link-cloud/fast-hyperf

LinkCloud Fast Hyperf

241.2k1](/packages/link-cloud-fast-hyperf)

PHPackages © 2026

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