PHPackages                             diogoko/boring-php - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. diogoko/boring-php

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

diogoko/boring-php
==================

Primitives for a boring PHP application

0.2.0(8y ago)0140MITPHP

Since Aug 16Pushed 8y ago1 watchersCompare

[ Source](https://github.com/diogoko/boring-php)[ Packagist](https://packagist.org/packages/diogoko/boring-php)[ RSS](/packages/diogoko-boring-php/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (3)Versions (3)Used By (0)

boring-php
==========

[](#boring-php)

Minimalist library of functions and classes to build working applications in (almost) plain PHP.

Motivation
----------

[](#motivation)

The current trend in application programming is to add layers of libraries and frameworks over the core language to make development easier. That does increase the abstraction level that the programmer sees, but also leads to [leaky abstractions](https://en.wikipedia.org/wiki/Leaky_abstraction), more stuff to be learned, and more moving/breakable parts that increase complexity.

Besides that, some programming languages are more specialized in certain tasks than others. PHP in particular started as a web templating engine, evolving to a general purpose language over time. I believe that PHP falls short of having most of the features that full-stack frameworks offer.

Being a [boring](http://mcfunley.com/choose-boring-technology), stable, known technology, PHP is a good choice for many projects. With small additions to the core functions and extensions, it can be used to develop larger applications while keeping maintainability.

Principles
----------

[](#principles)

Usage
-----

[](#usage)

### Basic routing

[](#basic-routing)

### Database access

[](#database-access)

### Consume and produce JSON

[](#consume-and-produce-json)

### Templating

[](#templating)

### Asset management

[](#asset-management)

### Access control

[](#access-control)

### Error handling

[](#error-handling)

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

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

Total

2

Last Release

3178d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/404536fc63f271fa5a63017f659cb31dbbb2adf2f2ec1576b0f01b451877cf92?d=identicon)[diogoko](/maintainers/diogoko)

---

Top Contributors

[![diogoko](https://avatars.githubusercontent.com/u/1585594?v=4)](https://github.com/diogoko "diogoko (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/diogoko-boring-php/health.svg)

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

###  Alternatives

[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k17](/packages/civicrm-civicrm-core)

PHPackages © 2026

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