otobank/phpstan-doctrine-criteria

PHPStan 的 Doctrine Criteria 扩展

0.5.0 2023-03-01 23:52 UTC

This package is auto-updated.

Last update: 2024-09-07 20:20:15 UTC


README

本扩展提供以下功能

  • 验证应用了标准的结果的实体字段。
  • 依赖 phpstan-doctrine,并包含其功能。

用法

composer require otobank/doctrine-target-aware-criteria
composer require --dev otobank/phpstan-doctrine-criteria
includes:
    - vendor/otobank/phpstan-doctrine-criteria/extension.neon
    - vendor/otobank/phpstan-doctrine-criteria/rules.neon

配置

parameters:
    doctrine:
        objectManagerLoader: bootstrap/phpstan_doctrine_manager.php

参见: https://github.com/phpstan/phpstan-doctrine

必须使用自定义标准。

FooCriteria

namespace App\Criteria;

use App\Entity\Foo;
use Otobank\PHPStan\Doctrine\Criteria;

class FooCriteria extends Criteria
{
    public static function getTargetClass() : string
    {
        return Foo::class;
    }
}

使用 FooCriteria

namespace App\Entity;

use App\Criteria\FooCriteria;

class Bar
{
    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\OneToMany(targetEntity="Foo", mappedBy="bar")
     */
    private $foos;

    public function getFilteredFoos()
    {
        $criteria = FooCriteria::create();
        $criteria = $criteria
            ->where($criteria->expr()->eq('fieldX', 1)) // Check if fieldX is defined in Foo class
        ;

        return $this->foos->matching($criteria);
    }
}

作者

Toshiyuki Fujita - tfujita@otobank.co.jp - https://github.com/kalibora

许可

在 MIT 许可下发布 - 有关详细信息,请参阅 LICENSE 文件

OTOBANK Inc.