riverwaysoft / php-converter
PHP 到 TypeScript / Dart 转换器
0.8.2.40
2024-04-29 02:12 UTC
Requires
- php: >=8.0
- composer/xdebug-handler: ^3.0
- doctrine/inflector: ^2.0
- jawira/case-converter: ^3.4
- jfcherng/php-diff: ^6.10
- nikic/php-parser: ^4.16
- phpstan/phpdoc-parser: ^1.6
- symfony/console: ^5.3|^6.3|^6.2|^6.1|^7.0
- symfony/filesystem: ^5.3|^6.3|^6.2|^6.1|^7.0
- symfony/process: ^5.3|^6.3|^6.2|^6.1|^7.0
- webmozart/assert: ^1.10
Requires (Dev)
- myclabs/php-enum: ^1.8
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.7
- phpstan/phpstan-deprecation-rules: ^1.1
- phpunit/phpunit: ^10
- rregeer/phpunit-coverage-check: ^0.3.1
- slevomat/coding-standard: ^8.13
- spatie/phpunit-snapshot-assertions: ^5
- symfony/var-dumper: ^5.3|^6.0|^7.0
- symplify/easy-coding-standard: ^11.5
- dev-main
- 0.8.2.40
- 0.8.2.39
- 0.8.2.38
- 0.8.2.37
- 0.8.2.36
- 0.8.2.35
- 0.8.2.34
- 0.8.2.33
- 0.8.2.32
- 0.8.2.31
- 0.8.2.30
- 0.8.2.29
- 0.8.2.28
- 0.8.2.27
- 0.8.2.26
- 0.8.2.25
- 0.8.2.24
- 0.8.2.23
- 0.8.2.22
- 0.8.2.21
- 0.8.2.20
- 0.8.2.19
- 0.8.2.18
- 0.8.2.17
- 0.8.2.16
- 0.8.2.15
- 0.8.2.14
- 0.8.2.13
- 0.8.2.12
- 0.8.2.11
- 0.8.2.10
- 0.8.2.9
- 0.8.2.8
- 0.8.2.7
- 0.8.2.6
- 0.8.2.5
- 0.8.2.4
- 0.8.2.3
- 0.8.2.2
- 0.8.2.1
- 0.8.2
- 0.8.1
- 0.7.9.24
- 0.7.9.23
- 0.7.9.22
- 0.7.9.21
- 0.7.9.20
- 0.7.9.19
- 0.7.9.18
- 0.7.9.17
- 0.7.9.16
- 0.7.9.15
- 0.7.9.14
- 0.7.9.13
- 0.7.9.12
- 0.7.9.11
- 0.7.9.10
- 0.7.9.9
- 0.7.9.8
- 0.7.9.7
- 0.7.9.6
- 0.7.9.5
- 0.7.9.4
- 0.7.9.3
- 0.7.9.2
- 0.7.9.1
- 0.7.9
- 0.7.8
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.0
- dev-support-nullable-array-with-question-sign
- dev-release-from-pr
- dev-automatic-release-start
- dev-php8.2
- dev-mitalcoi-patch-2
- dev-mitalcoi-patch-1
- dev-options-from-to-can-be-set-from-config
- dev-support-fqcn-in-php-attribute
- dev-code-reference
- dev-extract-type-resolver
- dev-infection
- dev-revamp-symfony-generator
- dev-support-generics
- dev-ecs
- dev-box-issue
This package is auto-updated.
Last update: 2024-09-29 03:15:35 UTC
README
从您的 PHP DTO 类生成 TypeScript & Dart。
为什么?
静态类型语言如 TypeScript 或 Dart 非常好,因为它们可以在不运行代码的情况下捕获错误。但除非 API 和消费者应用程序之间存在明确的契约,否则您可能会发现自己经常在 API 更改时调整过时的类型。这个库为您生成类型,使您能够更快地移动并遇到更少的错误。
要求
PHP 8.0 或更高版本
快速开始
- 安装
composer require riverwaysoft/php-converter --dev
如果安装导致依赖冲突,请考虑使用该包的 独立 Phar 版本。
- 使用 #[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; }
- 运行 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