PHPackages                             jaem3l/unfuck - 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. jaem3l/unfuck

ActiveComposer-plugin[Utility &amp; Helpers](/categories/utility)

jaem3l/unfuck
=============

The library to unfuck the vendor code and fuck up your own

v0.2.1(1y ago)84113MITPHPPHP ^8.2

Since Feb 17Pushed 5mo ago5 watchersCompare

[ Source](https://github.com/jaem3l/unfuck)[ Packagist](https://packagist.org/packages/jaem3l/unfuck)[ RSS](/packages/jaem3l-unfuck/feed)WikiDiscussions main Synced 1mo ago

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

Jæm3l Unfuck
============

[](#jæm3l-unfuck)

Since years the evolution of PHP has made it harder and harder to use vendor code without giving a fuck about the runtime.

So, if you are tired by the burden OSS maintainers are putting onto you by

- using the `final` keyword on classes or methods
- reducing the visibility of properties or methods to `private` or `protected`
- limiting capabilities by adding type declarations, return types or typed properties
- forcing you to pass method arguments by making them mandatory
- enforcing immutability with harsh `readonly` modifiers
- improving runtime stability

Jæm3l got you covered!

Just install jaem3l/unfuck to unfuck the vendor code you're using and fuck up your own:

```
$ composer require jaem3l/unfuck

```

**Jæm3l Unfuck** will hook into the runtime to get rid of all that painful limitations and give you all that freedom to shoot yourself in the foot, back or head the way you desire the most.

Example
-------

[](#example)

Your vendor library provides you a feature class like

```
final class Example
{
    private readonly string $foo;

    public function __construct(string $foo)
    {
        $this->foo = $foo;
    }

    private function getFoo(): string
    {
        return $this->foo;
    }
}
```

but you're sure you want to use it like this:

```
$inst = new class extends Example{};
$inst->foo = 42;

var_dump($inst->getFoo());
```

With **Jæm3l Unfuck** you are finally free to do it. YOLO

PS: This might impact runtime performance in time and memory consumption. But if you install this, you've already proven that you don't really care about your runtime. Why should this stop you?!

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance60

Regular maintenance activity

Popularity19

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.3% 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 ~227 days

Recently: every ~282 days

Total

6

Last Release

408d ago

PHP version history (2 changes)v0.1PHP ^8.1

v0.2.1PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/e644c6c1e90b7d997edd1c25da41c48a76d89b7449fb5788214b341e2cd1a019?d=identicon)[chr-hertel](/maintainers/chr-hertel)

---

Top Contributors

[![chr-hertel](https://avatars.githubusercontent.com/u/2852185?v=4)](https://github.com/chr-hertel "chr-hertel (10 commits)")[![DanielEScherzer](https://avatars.githubusercontent.com/u/179652704?v=4)](https://github.com/DanielEScherzer "DanielEScherzer (1 commits)")[![paulfedorow](https://avatars.githubusercontent.com/u/966844?v=4)](https://github.com/paulfedorow "paulfedorow (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jaem3l-unfuck/health.svg)

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

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M567](/packages/symfony-maker-bundle)[roave/backward-compatibility-check

Tool to compare two revisions of a public API to check for BC breaks

5953.3M56](/packages/roave-backward-compatibility-check)[coenjacobs/mozart

Composes all dependencies as a package inside a WordPress plugin

4723.6M20](/packages/coenjacobs-mozart)[psalm/plugin-laravel

Psalm plugin for Laravel

3274.9M308](/packages/psalm-plugin-laravel)[vaimo/composer-patches

Applies a patch from a local or remote file to any package that is part of a given composer project. Patches can be defined both on project and on package level. Optional support for patch versioning, sequencing, custom patch applier configuration and patch command for testing/troubleshooting added patches.

2994.3M16](/packages/vaimo-composer-patches)[mglaman/composer-drupal-lenient

1317.4M15](/packages/mglaman-composer-drupal-lenient)

PHPackages © 2026

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