Skip to content

Latest commit

 

History

History
126 lines (98 loc) · 2.58 KB

README.md

File metadata and controls

126 lines (98 loc) · 2.58 KB

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.