2011-11-23 10 views
6

既存のクラスからphpインターフェイスを生成するツールはありますか? Netbeansの自動ゲッタ/セッタ作成のようなツールを用意するのは良いことですが、インタフェースのためには役に立ちます。PHPインターフェイスを生成する

+2

あなたは何について話していますか?インターフェイスのゲッター/セッターは意味をなさない。なぜなら、インターフェイスはプロパティを持つことができないからである。あなたの質問を明確にする必要があります – KingCrunch

+1

@KingCrunch「Netbeansの自動ゲッター/セッター作成のようなツールを持っているといいですね」Netbeansは「クラスのプロパティーからゲッターとセッターを自動生成します」彼はインターフェースのようなものを望んでいます " – edorian

+0

おそらくエドリアンはすでに答えを出していると思われますが、通常は(「設計による契約」に従って)常にインターフェイスを最初に作成し、その署名に従ってクラスを作成する必要があります。 – KingCrunch

答えて

15

のプログラムの使用についてInterfaceDistillerは、あなたがこのような既存のクラスからインタフェースを派生することを可能にすることがあります:

$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'); 

また、CLIインタフェースを持っています

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. 

私はありませんphpのためのそのような機能を提供するIDEを認識しています。

3

現在、PHPStorm 8はこれを行うことができます。それ以前のバージョンでも可能です。

手順:クラス名の

  1. 場所にカーソルを置きます
  2. 選択:リファクタリングを - >抽出 - >インタフェース
  3. オプションを記入して行って。
関連する問題