eightmarq/doctrine-behaviors

Doctrine行为特性

安装: 8

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 290

类型:symfony-bundle

2.7.1 2024-03-06 10:04 UTC

README

Downloads

这是一个PHP库,包含了一系列特性接口,用于给Doctrine实体和存储库添加行为。

目前它处理以下行为:

安装

composer require eightmarq/doctrine-behaviors

用法

您只需要定义一个Doctrine实体

  • 实现了接口
  • 添加一个特性

对于一些如树形结构的行为,您可以使用存储库特性

<?php

declare(strict_types=1);

namespace App\Repository;

use Doctrine\ORM\EntityRepository;
use Knp\DoctrineBehaviors\ORM\Tree\TreeTrait;

final class CategoryRepository extends EntityRepository
{
    use TreeTrait;
}

就这样!

您现在有一个工作正常的Category,它的行为就像。

PHPStan

一个PHPStan扩展可用,并提供以下功能

  • TranslatableInterface::getTranslations()TranslatableInterface::getNewTranslations()提供正确的返回类型
  • TranslatableInterface::translate()提供正确的返回类型
  • TranslationInterface::getTranslatable()提供正确的返回类型

在您的项目的PHPStan配置中包含phpstan-extension.neon

# phpstan.neon
includes:
    - vendor/knplabs/doctrine-behaviors/phpstan-extension.neon

3步贡献方法

  • 每个拉取请求1个特性

  • 新特性需要测试

  • 测试和静态分析必须通过

    vendor/bin/phpunit
    composer fix-cs
    composer phpstan

从1.x升级到2

1和2之间有很多变化,但不用担心。此包使用Rector,它会为您处理升级。

composer require rector/rector --dev

创建rector.php配置

vendor/bin/rector init

将Doctrine Behaviors升级集添加到rector.php

use Rector\Core\Configuration\Option;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Rector\Doctrine\Set\DoctrineSetList;

return static function (ContainerConfigurator $containerConfigurator): void {
    $containerConfigurator->import(DoctrineSetList::DOCTRINE_BEHAVIORS_20);
};

运行Rector

vendor/bin/rector process src

Docker

用法

  • 安装Docker和Docker Compose
  • 构建或重新构建服务:docker compose build
  • 创建或启动容器:docker compose up -d
  • 进入php容器:docker compose exec php /bin/sh
  • 运行命令
    • composer check-cs
    • composer phpstan
    • vendor/bin/phpunit