Unleash the freedom lost with open source PHP packages marking classes and methods as final
.
Unfinalize uses PHP CS Fixer to permanently remove final
keywords from composer vendor packages:
- final class Foo
+ class Foo
{
- final public function bar()
+ public function bar()
{
// ...
}
}
- 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.
composer require stevebauman/unfinalize
Inside your composer.json
file, add the vendor packages you want to remove the final keywords from inside:
{
"unfinalize": [
"vendor/package"
]
}
Add the unfinalize command to your composer.json
so it runs on composer update
:
{
"scripts": {
"post-update-cmd": [
"@php vendor/bin/unfinalize run"
]
}
}
Then, run composer update
.
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()
{
// ...
}
}
Execute a dry run to see what files will be modified by PHP CS Fixer.