knplabs/doctrine-behaviors

Doctrine 行为特性

安装: 10,361,225

依赖者: 98

建议者: 6

安全性: 0

星标: 914

关注者: 49

分支: 290

开放问题: 63

类型:symfony-bundle

2.6.2 2022-08-06 10:40 UTC

README

Downloads

这个PHP库是一系列特性和接口的集合,可以为Doctrine实体和仓库添加行为。

它目前处理以下行为

安装

composer require knplabs/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步

  • 每个pull-request一个功能

  • 新功能需要测试

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

    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