Unfinalize

stevebauman/unfinalize image

Unfinalize stats

Downloads
237
Stars
103
Open Issues
1
Forks
3

View on GitHub →

Permanently remove final keywords from vendor packages.

Unfinalize

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.

Installation

composer require stevebauman/unfinalize

Usage

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.

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.

stevebauman photo

I like to build things on the web 💻

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Stevebauman Unfinalize Related Articles

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

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

Read article
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum