2016-01-14 9 views
5

リファクタリングのphp-クラス上のファイル名の表記を使用して:Mars.1リリース(4.5.1)のEclipse - 私はEclipseに新しいですし、バージョンのバージョンを使用しています

私は、「PHP開発ツールのリファクタリングツールを使用しています3.6 "プラグインの名前を変更するクラス。

私たちのクラスファイル名は、下線がサブディレクトリを表す単純なPSR-0規約に従います。

クラスClass_Something は私がClass_Something2するクラスClass_Somethingの名前を変更する場合は、ファイルが自動的にもし誰もが知ってい

クラス/ Something2.phpに移動される場合、それは素晴らしいことだ クラス/ Something.php

に位置していますクラスの名前と参照だけでなく、ファイル名も自動的にリファクタリングすることができますか?

ご協力いただきありがとうございます。

ベン

+1

私はあなたの期待を実現することができ、特定のプラグインがありますとは思わない、カスタムを開発する必要がありますあなたはこのようなリファクタリングを行うためにEclipseから手動で起動することができます。 –

答えて

4
からPHPパーサを、Eclipseプラグインのような

まず見えダウンロードしてインストール

手作りソリューション:簡単な例では、指定したソースコードからクラス名を得ることができることを示しますphp-parser-github ソースコードの

require 'vendor/autoload.php'; 
use PhpParser\ParserFactory; 

$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7); 
try { 
    $stmts = $parser->parse('<?php class MyClass_SubDir {private $member;}'); 
    var_dump($stmts); 
} 
catch (Error $e) { 
    echo 'Parse Error: ', $e->getMessage(); 
} 

出力//コマンドラインから

array(1) { 
    [0]=> 
    object(PhpParser\Node\Stmt\Class_)#8 (6) { 
    ["type"]=> 
    int(0) 
    ["extends"]=> 
    NULL 
    ["implements"]=> 
    array(0) { 
    } 
    ["name"]=> 
    string(14) "MyClass_SubDir" 
    ["stmts"]=> 
    array(1) { 
     [0]=> 
     object(PhpParser\Node\Stmt\Property)#7 (3) { 
     ... 
} 

それを実行し、あなたが見ることができるように、我々は

--object(PhpParser\Node\Stmt\Class_ 
| 
|___ name : MyClass_SubDir 

の目標はここに

をしている現在のソースで定義されているすべてのクラスを取得することができます
  • `regex`または` explode`を使用できるように、ディレクトリ名をクラス名から抽出します。
  • はあなたが...どこか例えばeclipse_plugin.phpをPHPコードを保存 `rename`機能

を使用することができ、目的のディレクトリに現在のファイルを移動し

  • ..

    次のステップは** ** $図1からは、Eclipse

    から
    • を2つの引数を受け取ること風呂ファイルを作成します。Eclipseの

      で栓をされるバッチファイルを作成することです:コンテナの場所を - Eclipseで選択したファイルの絶対パス

    • ** $ 2 **:リソースの場所 - Eclipseで選択したファイルの絶対パスと名前は、(我々はたったの$ 2 :-)が必要になります)
    012バッチファイルで

    php eclipse_plugin.php $1 $2 
    

    注意を置く:PHPはPATH環境変数でなければなりません PHPに行く

    • $argv[0]$argv[1]

      の設定Eclipseで彼の引数を見つけるだろう外部ツールの実行>外部ツールの設定>プログラムセクションをクリック>新しい起動設定を押すタブのメインで

    • 、カスタムバッチファイル
    • の場所を指定します。また、これらの引数$ {container_loc} $ {resource_loc}完了

    を入れて、セクションの引数で

  • 彼の作業ディレクトリを指定します!、あなたはEclipseでクラスの名前を変更する際に、今、ちょうどファイル名を指定して実行]ボタンをクリックしてください:)

    HTH

  • +0

    svnの履歴とキャッシュは何ですか?移動したファイルはおそらく新しいファイルとして検出されるでしょうか?そうではありませんか? –

    +0

    @code_angel良い質問:)とレスポンスは単純です:バッチファイルによって実行されるPHPスクリプトでjusteが 'svn move'を呼び出します:) –

    +0

    うわー、そのすばらしい答えに感謝して、私を助けました! – Ben

    関連する問題