phpactor/language-server-protocol

PHP 语言服务器协议(转译版)

3.17.3 2023-03-11 13:19 UTC

README

CI

此包将 vscode-language-server-protocol 库转译为 PHP,提供创建语言服务器所需的协议类。

关于使用此库的注意事项

大多数(如果不是所有)上游 TypeScript 类型没有构造函数,因此构造函数的参数顺序可能会在 每次发布 时更改。

因此,强烈建议使用命名参数。

生成

生成代码

  • npm run generate:构建和转译
  • npm run watch:在 TypeScript 变更时监视和编译。

运行 PHP 测试

  • composer integrate

使用方法

反序列化

此库将使用 TypeScript 中的类型信息为每个类型生成 fromArray 静态构造函数。

$item = CompletionItem::fromArray([
    'label' => 'Foobar',
    'kind' => 1,
    'detail' => 'This is foobar',
    'documentation' => [
        'kind' => 'markdown',
        'value' => 'Foobar',
    ],
    'additionalTextEdits' => [
        [
            'range' => [
                'start' => [
                    'line' => 5,
                    'character' => 10,
                ],
                'end' => [
                    'line' => 10,
                    'character' => 10,
                ],
            ],
            'newText' => 'Foobar',
        ],
    ],
    'command' => [
        'title' => 'Foobar',
        'command' => 'my.command',
    ],
]);

将返回一个完全填充的完成项,具有具体的子类型。

注意:在从语言服务器客户端请求反序列化时,忽略附加参数(fromArray 的第二个参数)可能是个好主意。这是因为将未知属性传递给某些 LSP 对象是完全有效的。

序列化

类中的属性是公开的,以启用 JSON 序列化。调用 json_encode($lspObject) 获取有效的 LSP JSON 对象。

贡献

此包是开源的,欢迎贡献!请随意在此存储库上提交拉取请求。

支持

  • 在主 Phpactor 存储库上创建一个问题。
  • 加入 Slack 上的 #phpactor 频道,Slack 频道地址为 Symfony Devs