bentools / doctrine-native-enums
此包已被弃用且不再维护。未建议替代包。
为 Doctrine 提供原生 PHP 枚举的一级支持。
0.1.2
2022-01-31 12:47 UTC
Requires
- php: >=8.1
- doctrine/dbal: ^2.13 >=2.13.5 || ~3.1
Requires (Dev)
- ext-sqlite3: *
- doctrine/doctrine-bundle: ^2.4
- doctrine/orm: ^2.9
- mockery/mockery: ^1.4
- pestphp/pest: ^1.18
- squizlabs/php_codesniffer: ^3.6
- symfony/framework-bundle: ^5.3
- symfony/http-kernel: ~5.0
- symfony/validator: ^5.3
- symfony/yaml: ^5.3
README
Doctrine 原生枚举
此库为 Doctrine 实体提供了对 PHP 枚举 的支持,PHP 8.1 中引入。
⚠️ 2022 年 1 月:Doctrine ORM 2.11 终于引入了对 PHP 8.1 枚举的 原生支持!🎉
这意味着此捆绑包将很快或最终被弃用。请升级您的依赖项!
安装
composer require bentools/doctrine-native-enums
使用方法
此库仅与 Backed enums 兼容。
在 Symfony 项目中
1. 声明捆绑包。
// config/bundles.php return [ // ... BenTools\Doctrine\NativeEnums\Bundle\DoctrineNativeEnumsBundle::class => ['all' => true], ];
2. 在配置中注册枚举。
# config/packages/doctrine_native_enums.yaml doctrine_native_enums: enum_types: App\Entity\StatusEnum: ~ #App\Entity\StatusEnum: status # Alternatively, if you want your type to be named "status"
3. 在实体中使用它们。
declare(strict_types=1); namespace App\Entity; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] final class Book { #[ ORM\Id, ORM\Column(unique: true), ORM\GeneratedValue(strategy: 'AUTO'), ] public int $id; #[ORM\Column] public string $name; #[ORM\Column(type: StatusEnum::class)] public StatusEnum $status; }
在其它使用 Doctrine 的项目中
use App\Entity\StatusEnum; use BenTools\Doctrine\NativeEnums\Type\NativeEnum; use Doctrine\DBAL\Types\Type; NativeEnum::registerEnumType(StatusEnum::class); // NativeEnum::registerEnumType('status', StatusEnum::class); // Alternatively, if you want your type to be named "status"
测试
php vendor/bin/pest
许可
MIT.