cspray/phinal

Enforce final on your classes!

Maintainers

👁 cspray

Package info

github.com/cspray/phinal

Type:psalm-plugin

pkg:composer/cspray/phinal

Statistics

Installs: 318 660

Dependents: 3

Suggesters: 0

Stars: 14

Open Issues: 2

2.1.1 2025-06-11 13:11 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT f7d1535ab4ec560d8f6b1c75a7661068caa83c70

This package is auto-updated.

Last update: 2026-06-11 15:36:20 UTC


README

Do you like final? Really like it? Then enforce it on all your classes! When you have to fallback to inheritance you can do so by explicitly marking your class with an Attribute and explaining why it should be inherited.

Installation

Running Psalm 6

composer require --dev cspray/phinal
vendor/bin/psalm-plugin enable cspray/phinal

Running Psalm 5

composer require --dev cspray/phinal:2.1
vendor/bin/psalm-plugin enable cspray/phinal

Running Psalm 4

composer require --dev cspray/phinal:1.0.0
vendor/bin/psalm-plugin enable cspray/phinal

Code Examples

Good! 👍

<?php declare(strict_types=1);

use Cspray\Phinal\AllowInheritance;

final class ProperlyMarkedFinal {}

#[AllowInheritance('Explain why you would need to inherit this.')]
class YouCanInheritThis {}

Bad! 👎

<?php declare(strict_types=1);

class NotMarkedFinal {}

Why do you need to inherit this? You probably don't need to and should mark it final!