VSCode - PHP - 移动类后更新命名空间和其他文件的导入

问题描述 投票:0回答:1

有谁知道是否可以配置 VSCode 以在将文件移动到其他位置后发生以下情况?

  • 更新类/特征的命名空间。
  • 更新引用此文件的所有其他文件的导入。

例如,假设我在

src/app
有以下课程:

src/app/Hello.php

<?php

namespace App;

class Hello {
...
}

src/app/Goodbye.php

<?php

namespace App;

use App\Hello;

class Goodbye {
...
}

我想将我的

src/app/Hello.php
文件移至
src/app/services/Hello.php
。应该会发生以下情况:

  • 命名空间从
    namespace App
    更改为
    namespace App\Services
  • src/app/Goodbye.php
    中的导入从
    use App\Hello
    更改为
    use App\Services\Hello

那么我们将有:

src/app/services/Hello.php

<?php

namespace App\Services;

class Hello {
...
}

src/app/Goodbye.php

<?php

namespace App;

use App\Services\Hello;

class Goodbye {
...
}

这可以通过 PHP Intelephense 或 PHP 命名空间解析器扩展或任何其他方式来完成吗?

php visual-studio-code
1个回答
0
投票

这可以通过付费版本的 Intelepense 来完成。在 VSCode 中,您必须对文件中的命名空间声明执行“重命名符号”(通过右键单击上下文菜单或按 F2),它会自动将文件移动到正确的文件夹并更改所有出现的位置。

例如,如果您有一个文件

Foo/Baz.php

<?php

namespace Foo;

class Baz {}

对 Foo 执行“重命名符号”并将其更改为

Foo\Bar

现在该文件将被移动到

Foo/Bar/Baz.php
并且命名空间声明将更改:

<?php

namespace Foo\Bar;

class Baz {}

其他文件中出现的所有

Baz
也将如此:

<?php

use Foo\Bar\Baz; # Instead of use Foo\Baz.

use Foo\Bar\Baz as Bap; # Instead of use Foo\Baz as Bap.

new Foo\Bar\Baz; # Instead of new Foo\Baz.

# And so on...
© www.soinside.com 2019 - 2024. All rights reserved.