Skip to main content

Generate PHP Interfaces

Is there a tool the generate php interface from existing classes? It would be nice to have a tool like Netbeans automatic getter/setter creation but for interfaces.

Solved

For programmatic usage there is InterfaceDistiller that allows you to derive interfaces from existing classes like this:

$distiller = new InterfaceDistiller;
$distiller
    ->methodsWithModifiers(\ReflectionMethod::IS_PUBLIC)
    ->extendInterfaceFrom('Iterator, SeekableIterator')
    ->excludeImplementedMethods()
    ->excludeInheritedMethods()
    ->excludeMagicMethods()
    ->excludeOldStyleConstructors()
    ->filterMethodsByPattern('(^get)')
    ->saveAs(new SplFileObject('MyInterface.php'))
    ->distill('SomeFoo', 'MyInterface');

It also has a CLI interface:

Usage: phpdistill [options]  

  --bootstrap                           Path to File containing your bootstrap and autoloader

  --methodsWithModifiers        A ReflectionMethod Visibility BitMask. Defaults to Public.
  --extendInterfaceFrom       Comma-separated list of Interfaces to extend.
  --excludeImplementedMethods           Will exclude all implemented methods.
  --excludeInheritedMethods             Will exclude all inherited methods.
  --excludeMagicMethods                 Will exclude all magic methods.
  --excludeOldStyleConstructors         Will exclude Legacy Constructors.
  --filterMethodsByPattern     Only include methods matching PCRE pattern.
  --saveAs                              Filename to save new Interface to. STDOUT if omitted.

I'm not aware of any IDE that offers such functionality for php.


Currently PHPStorm 8 can do this, maybe prior versions as well.

Steps:

  1. Place your cursor on the class name
  2. Choose: Refactor -> Extract -> Interface
  3. Fill out the options and done.

Comments