2016-01-14 6 views
5

मैं ग्रहण करने के लिए नया हूँ और संस्करण संस्करण का उपयोग कर रहा: Mars.1 रिलीज (4.5.1)ग्रहण - पुनर्रचना php-वर्ग पर फ़ाइल नाम कन्वेंशनों का उपयोग

मैं "पीएचपी विकास उपकरण की पुनर्रचना के उपकरण का उपयोग कर रहा 3.6 "नाम बदलने के लिए प्लगइन उदाहरण के लिए कक्षाएं।

हमारी कक्षा फ़ाइल नाम सरल पीएसआर -0 सम्मेलन का पालन करते हैं जो अंडरस्कोर एक उपदिर का प्रतिनिधित्व करता है।

तो उदा। वर्ग Class_Something /Something.php

कक्षा में स्थित है

अगर मैं Class_Something2 लिए यह बहुत अच्छा होगा अगर फ़ाइल स्वचालित रूप से कक्षा/Something2.php को पेश किया जाएगा वर्ग Class_Something नाम बदलने

किसी को भी करता है, तो पता है कक्षा के नाम और संदर्भों के साथ ही फ़ाइल नाम को स्वचालित रूप से रिफैक्टर करना संभव है?

आपकी मदद के लिए अग्रिम धन्यवाद!

बेन

+1

मुझे नहीं लगता कि एक विशिष्ट प्लगइन है कि आपकी अपेक्षाओं को प्राप्त कर सकते हैं कि है, तो आप एक कस्टम विकसित करने की आवश्यकता नियमित रूप से आप ग्रहण से मैन्युअल रूप से लॉन्च कर सकते हैं ताकि इस तरह के रिफैक्टरिंग –

उत्तर

4

हस्त समाधान जो,

पहले एक ग्रहण प्लगइन की तरह दिखता है डाउनलोड और स्थापित पीएचपी पार्सर से: 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(); 
} 
,210

कमांड लाइन से चल रहा है // आउटपुट

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` या' विस्फोट '
  • का उपयोग कर सकते हैं
  • वांछित निर्देशिका के लिए वर्तमान फ़ाइल ले जाएँ, आप `rename` समारोह का उपयोग कर सकते

कहीं अपने php कोड सहेजें ... उदाहरण के लिए eclipse_plugin.php ..कंटेनर स्थान:

अगले कदम के एक बैच फ़ाइल है कि ग्रहण

एक स्नान फ़ाइल है कि यह ग्रहण

से 2 तर्कों प्राप्त होगा
  • ** $ 1 ** बनाएं साथ खामियों को दूर किया जाएगा बनाने के लिए है - ग्रहण में चयनित फ़ाइल का निरपेक्ष पथ
  • ** $ 2 **: संसाधन स्थान - ग्रहण में चयनित फ़ाइल का पूर्ण पथ और नाम (हम केवल $ 2 :-) की आवश्यकता होगी)

बैच फ़ाइल में डाल

php eclipse_plugin.php $1 $2 

नोट: php PATH वातावरण चर में होना चाहिए PHP में $argv[0] और $argv[1]

कॉन्फ़िगर ग्रहण

  • पर जाने के उनके तर्कों मिलेगा बाहरी उपकरण चलाएं> बाहरी उपकरण कॉन्फ़िगरेशन> प्रोग्राम अनुभाग> नई लॉन्च कॉन्फ़िगरेशन पर क्लिक करें
  • टैब मुख्य में, इसके अलावा अपने काम निर्देशिका में खंड तर्क
  • निर्दिष्ट अपने कस्टम बैच फ़ाइल
  • का स्थान निर्दिष्ट इन तर्कों $ {container_loc} $ {resource_loc}

हो गया डाला!, अब जब आप Eclipse में अपना वर्ग का नाम बदलने के लिए, बस भागो बटन :)

HTH पर क्लिक करें

+0

एसवीएन इतिहास और कैश के साथ क्या हो? स्थानांतरित फ़ाइलों को शायद नए के रूप में पहचाना जाएगा, है ना? –

+0

@code_angel अच्छा सवाल :) और प्रतिक्रिया सरल है: बैच फ़ाइल द्वारा निष्पादित PHP स्क्रिप्ट में बस कॉल 'svn move' :) –

+0

वाह, उस महान उत्तर के लिए बहुत बहुत धन्यवाद, मुझे बहुत मदद मिली! – Ben

संबंधित मुद्दे