Я новичок в затмении и использую версию Версия: 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
Кто-нибудь знает, возможно ли автоматическое рефакторинг не только имени и ссылок класса, но и имени файла?
Заранее спасибо за помощь!
Бен
Решение ручной работы, которое выглядит как плагин 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
Цели здесь
Сохраните свой php-код где-нибудь … eclipse_plugin.php, например ..
Следующим шагом является создание командного файла, который будет подключен к Eclipse.
Создайте файл ванны, чтобы он получал 2 аргумента от Eclipse
В пакетном файле положи
php eclipse_plugin.php $1 $2
Заметка : PHP должен быть в PATH
переменные среды
PHP найдет свои аргументы в $argv[0]
а также $argv[1]
Настройка Eclipse
Готово !, теперь, когда вы переименуете свой класс в Eclipse, просто нажмите на Кнопка запуска 🙂
НТН
Других решений пока нет …