For programmatic use, InterfaceDistiller , which allows you to derive interfaces from existing classes as follows:
$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] <classname> <interfacename> --bootstrap Path to File containing your bootstrap and autoloader --methodsWithModifiers <number> A ReflectionMethod Visibility BitMask. Defaults to Public. --extendInterfaceFrom <name,...> 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 <pattern> Only include methods matching PCRE pattern. --saveAs Filename to save new Interface to. STDOUT if omitted.
I do not know any IDE that offers such functionality for php.
source share