Laravel Packages

Remove "final" keywords from classes and methods in vendor packages with Unfinalize

Published Updated
Remove "final" keywords from classes and methods in vendor packages with Unfinalize image

Unfinalize by Steve Bauman just released v1, and those release notes are worth a minute of your time.

Unfinalize is a package that uses PHP CS Fixer to permanently remove final keywords from composer vendor packages.

Please Note: you'll need to fork this package if you want to use it as the PHP CS Fixer team has marked the original package as a conflict. You can get around this by forking this package with a new name.

- final class Foo
+ class Foo
{
- final public function bar()
+ public function bar()
{
// ...
}
}

When you run it, it does the following:

  • Updates to PHP files are done safely, quickly, and performant.
  • Changes are stored permanently. There is no performance impact using Unfinalize.
  • No additional dependencies to your application. Unfinalize and its dependencies are compiled into a single phar file.

Unfinalize Usage

Install it first:

composer require stevebauman/unfinalize

Then, inside your composer.json file, add the vendor packages you want to remove the final keywords from inside:

{
"unfinalize": [
"vendor/package"
]
}

Next, add the unfinalize command to your composer.json so it runs on composer update:

{
"scripts": {
"post-update-cmd": [
"@php vendor/bin/unfinalize run"
]
}
}

Finally, run composer update.

Unfinalize Options

--mark-final

If you would like final classes and methods to be marked with a @final doc block, you may add the --mark-final option to the unfinalize command:

{
"scripts": {
"post-update-cmd": [
"@php vendor/bin/unfinalize run --mark-final"
]
}
}

Which will produce:

Before:

final class Foo
{
final public function bar()
{
// ...
}
}

After:

/**
* @final
*/
class Foo
{
/**
* @final
*/
public function bar()
{
// ...
}
}

--dry

Execute a dry run to see what files will be modified by PHP CS Fixer.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article