首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse -在重构php类时使用文件名约定

Eclipse -在重构php类时使用文件名约定
EN

Stack Overflow用户
提问于 2016-01-14 16:46:17
回答 1查看 204关注 0票数 5

我是eclipse的新手,正在使用版本: Mars.1 Release (4.5.1)

我正在使用"PHP开发工具3.6“插件的重构工具来重命名类。

我们的类文件名遵循简单的PSR-0约定,即下划线表示一个子目录。

例如,类Class_Something位于Class/Something.php中

如果我将类Class_Something重命名为Class_Something2,如果文件会自动移到Class/Something2.php,那就太好了

有没有人知道不仅可以自动重构类的名称和引用,还可以自动重构文件名?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-01-20 18:48:35

看起来像Eclipse插件的手工解决方案

首先,从以下位置下载并安装PHP Parser:php-parser-github一个简单的示例将向您展示,您可以从给定的源代码获取类名

源代码的示例

代码语言:javascript
复制
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();
}

从命令行运行的输出//

代码语言:javascript
复制
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) {
      ...
}

正如您所看到的,我们可以获取当前源代码中定义的所有类

代码语言:javascript
复制
--object(PhpParser\Node\Stmt\Class_
 |
 |___ name : MyClass_SubDir

这里的目标是

  • 从类名中提取目录名,为此,您可以使用regexexplode
  • 将当前文件移动到所需目录,您可以使用rename函数

把你的php代码保存在某个地方...例如,eclipse_plugin.php ..

下一步是创建一个批处理文件,该文件将用Eclipse插入

创建一个bath文件,它将从Eclipse接收2个参数

资源位置**$1**:容器位置-所选文件在Eclipse

  • **$2**中的绝对路径:
  • -所选文件在Eclipse
  • **$2**中的绝对路径和名称(我们只需要$2 :-) )

在批处理文件中put

代码语言:javascript
复制
php eclipse_plugin.php $1 $2 

php注意:PHP必须在PATH环境变量中PHP会在$argv[0]$argv[1]中找到他的参数

配置Eclipse

  • 转到Run External Tools > External Tools Configuration >单击Program部分>按Tab Main中的New Launch Configuration
  • ,指定您的自定义批处理文件的位置
  • 在部分参数中指定他的工作目录
  • ,将这些参数${container_loc} ${resource_loc}

完成了!,现在当您在中重命名您的类时,只需单击运行按钮 :)

HTH

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34785062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档