Eclipse — Использование соглашений об именах файлов при рефакторинге php-классов

Я новичок в затмении и использую версию Версия: Mars.1 Release (4.5.1)

Я использую инструмент рефакторинга плагина «PHP Development Tools 3.6» для переименования, например. классы.

Наши имена файлов классов следуют простому соглашению PSR-0, что подчеркивание представляет subdir.

Так, например
class Class_Something
находится в
Класс / Something.php

Если бы я переименовал класс Class_Something в Class_Something2, было бы здорово, если бы файл был автоматически перемещен в Class / Something2.php

Кто-нибудь знает, возможно ли автоматическое рефакторинг не только имени и ссылок класса, но и имени файла?

Заранее спасибо за помощь!

Бен

5

Решение

Решение ручной работы, которое выглядит как плагин Eclipse

Сначала загрузите и установите PHP Parser из: PHP-парсер-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`
  • Переместите текущий файл в нужную директорию, вы можете использовать функцию `rename`

Сохраните свой php-код где-нибудь … eclipse_plugin.php, например ..

Следующим шагом является создание командного файла, который будет подключен к Eclipse.

Создайте файл ванны, чтобы он получал 2 аргумента от Eclipse

  • ** $ 1 **: местоположение контейнера — абсолютный путь к выбранному файлу в Eclipse
  • ** $ 2 **: расположение ресурса — абсолютный путь и имя выбранного файла в Eclipse (нам понадобится всего $ 2 :-))

В пакетном файле положи

php eclipse_plugin.php $1 $2

Заметка : PHP должен быть в PATH переменные среды
PHP найдет свои аргументы в $argv[0] а также $argv[1]

Настройка Eclipse

  • перейдите в «Запуск внешних инструментов»> «Конфигурация внешних инструментов»> щелкните «Раздел программы»> нажмите «Новая конфигурация запуска».
  • в закладке Main укажите местоположение вашего пользовательского пакетного файла
  • Также укажите его рабочий каталог
  • в разделе Аргументы поместите эти аргументы $ {container_loc} $ {resource_loc}

Готово !, теперь, когда вы переименуете свой класс в Eclipse, просто нажмите на Кнопка запуска 🙂

НТН

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]