2016-01-14 28 views
5

Refactoring php-Sınıflar Dosya Adı Kullanmadan: Mars.1 Yayın (4.5.1)Eclipse - Ben Tutulma için yeni ve sürüm Sürüm kullanıyorum

ben "PHP Geliştirme Araçları üstlenmeden araç kullanıyorum 3.6 "eklenti yeniden adlandırmak için örneğin sınıflar.

Sınıf dosya adlarımız, alt çizgilerin bir alt dizini temsil ettiği basit PSR-0 kuralını izler. Örneğin, örn. sınıf Class_Something Ben dosyası otomatik Sınıf/Something2.php taşınacak olsaydı harika olurdu Class_Something2 sınıf Class_Something yeniden adlandırırsanız

herkes biliyor mu

/ Class Something.php

bulunduğu Sadece sınıfın ismini ve referanslarını değil, aynı zamanda dosya adını otomatik olarak yeniden düzenlemek mümkün mü?

Yardımlarınız için şimdiden teşekkür ederiz!

Ben

+1

, bir özel geliştirmek gerekiyor Çalıştır Düğme :)

HTH tıklayın Bu tür bir refactoring yapmak için tutulmadan el ile başlatabileceğiniz rutin –

cevap

4
itibaren PHP Ayrıştırıcı, bir Eclipse eklentisi gibi

İlk görünüyor indirme ve yüklemeye

El yapımı çözümü: Basit bir örnek, belirli bir kaynak kodundan sınıf adını alabilirsiniz gösterecektir php-parser-github kaynak kod

Örnek

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(); 
} 
.210

Çıktı // komut satırından

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) { 
     ... 
} 

bunu Koşu ve gördüğünüz gibi, biz

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

gol burada

olan akım kaynağı tanımlanan tüm sınıf alabilirsiniz
  • Dizin adını bir sınıf adından ayıklayın, bunu yapmak için 'regex' veya 'explode' işlevini kullanabilirsiniz
  • istenen dizine mevcut dosyayı taşıyın
  • , sen `rename` fonksiyonunu kullanabilirsiniz

yere kodu php kaydet ... örneğin eclipse_plugin.php ..Konteyner yeri:

sonraki adım Eclipse

o

  • ** $ 1 ** Eclipse

    2 argümanlar alacak bir hamam dosyası oluşturma ile takılı olacak bir toplu iş dosyası oluşturmak için - Eclipse seçilen dosyanın mutlak yol
  • ** $ 2 **: kaynak yeri - Eclipse seçilen dosyanın mutlak yolu ve adı (sadece 2 $ :-) gerekir)
012 Toplu dosyasında

php eclipse_plugin.php $1 $2 

Not koydu: php PATH ortam değişkenleri olmalıdır PHP gitmek

  • $argv[0] ve $argv[1]

    Yapılandırma Eclipse yaptığı argümanlar bulacaksınız Harici Araçları Çalıştır> Harici Araçlar Yapılandırması> Program Bölümü> Yeni Başlat Yapılandırmasına Bas Sekme Main

  • , aynı zamanda onun çalışma dizini bölümü Argümanlar içinde
  • belirtmek özel toplu dosyasına
  • konumunu belirtmek Bu argümanlar $ {container_loc} $ {resource_loc}

Bitti koymak! Eğer Eclipse daki sınıfı yeniden adlandırmak zaman, şimdi, sadece

i beklentiniz elde edebilirsiniz belirli eklenti var olduğunu sanmıyorum
+0

svn geçmişi ve önbelleği nedir? Taşınan dosyalar muhtemelen yeni olanlar olarak algılanacak, değil mi? –

+0

@ code_angel iyi soru :) ve yanıt basit: toplu iş dosyası tarafından çalıştırılan PHP betiğinde juste çağrısı 'svn move' :) –

+0

Wow, bu harika cevap için çok teşekkürler, bana çok yardımcı oldu! – Ben

İlgili konular