riverwaysoft/php-converter

PHP 到 TypeScript / Dart 转换器

0.8.2.40 2024-04-29 02:12 UTC

README

Screen Shot 2022-10-07 at 09 04 35

从您的 PHP DTO 类生成 TypeScript & Dart。

为什么?

静态类型语言如 TypeScript 或 Dart 非常好,因为它们可以在不运行代码的情况下捕获错误。但除非 API 和消费者应用程序之间存在明确的契约,否则您可能会发现自己经常在 API 更改时调整过时的类型。这个库为您生成类型,使您能够更快地移动并遇到更少的错误。

要求

PHP 8.0 或更高版本

快速开始

  1. 安装
composer require riverwaysoft/php-converter --dev

如果安装导致依赖冲突,请考虑使用该包的 独立 Phar 版本

  1. 使用 #[Dto] 注解标记几个类,将它们转换为 TypeScript 或 Dart。
use Riverwaysoft\PhpConverter\Filter\Attributes\Dto;

#[Dto]
class UserOutput
{
    public string $id;
    public int $age;
    public ?UserOutput $bestFriend;
    /** @var UserOutput[] */
    public array $friends;
}
  1. 运行 CLI 命令以生成 TypeScript
vendor/bin/php-converter --from=/path/to/project/src --to=.

这将生成一个包含以下内容的文件 generated.ts

type UserOutput = {
  id: string;
  age: number;
  bestFriend: UserOutput | null;
  friends: UserOutput[];
}

功能

  • 支持所有 PHP 数据类型,包括联合类型、可为空的类型和枚举。
  • 支持 PHP DocBlock 类型,例如 User[]int[][]|null 以及泛型,归功于 phpstan/phpdoc-parser
  • 自定义类型解析器(例如,对于 DateTimeImmutable)。
  • 生成单个输出文件或多个文件(每文件一个类型)。
  • 可覆盖生成逻辑的选项。
  • 灵活的类过滤器,可选择使用您自己的过滤器。
  • 从 Symfony 或 API Platform 代码生成 API 客户端。

自定义

如果您想自定义转换过程,则需要将配置脚本复制到您的项目文件夹中

cp vendor/riverwaysoft/php-converter/bin/default-config.php config/ts-config.php

现在您可以自定义此配置,并使用以下脚本运行 php-converter

vendor/bin/php-converter --from=/path/to/project/src --to=. --config=config/ts-config.php

文档